Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 19:19 05.06.24 
Компютри и Интернет
   >> PHP
Всички теми Следваща тема *Кратък преглед

Тема Изпълнение на шел коменда?  
Авторpesho (Нерегистриран)
Публикувано17.02.02 15:36



Интересува ме някой знае ли как мога да изпълня шел команда като резултат се върща ред по ред, като започва още преди да е завършило изпълнението.
В случая става въпрос за traceroute. Искам след всеки ред да ми връща резултат.
Би трябвало да стане като чета някакъв буфер вероятно.
Четох в едни форуми че ставало с ob_flush и popen, ама не сам много на ясно как точно трябва да се напише. Ами това си ми е проблемчето. Някакви идеи.



Тема Re: Изпълнение на шел коменда?нови [re: pesho]  
Автор Dakota (отверт)
Публикувано17.02.02 22:03



Така...за шел командата:
$var = `cmd`;

Въпросът за буферирането в Perl е решен като се сложи променливата:
$| = 1;

Обаче в PHP не знам как става...следя с интерес.

"Никоя армия не може да спре идея, чието време е дошло." - Виктор Юго


Тема Re: Изпълнение на шел коменда?нови [re: Dakota]  
Авторpesho (Нерегистриран)
Публикувано18.02.02 08:43



Здравей,
ясно ми е как да изпълня шел команда поне по 4 начина, но ми трябва ред по ред да се върща резултата. Мерси все пак. Ако намеря решение ще го постна.



Тема Re: Изпълнение на шел коменда?нови [re: pesho]  
Автор bofh (°) (_) (°)
Публикувано18.02.02 10:33





bofh

Тема Не видях че питаш как :) етонови [re: bofh]  
Автор bofh (°) (_) (°)
Публикувано18.02.02 11:30




$fp = popen('/path/to/fileto 2>&1', 'r');
while(!feof($fp)) {
$buff = fgetc($fp); // ili $buff = fread($fp, 1024);
echo $buff;
flush();
}
pclose($fp);


bofh

Тема Re: Не видях че питаш как :) етонови [re: bofh]  
Авторpesho (Нерегистриран)
Публикувано18.02.02 12:34



Здравей bofh,
разгледах ти скрипта, но както написах ми трябва такъв който изкарва данни преди да е завършила командата, а този начин по пробах преди и той връща всичко след завършване на командата. Ще дам един пример да се изясня.
Например правя dir и искам още първия върнат ред да го изкарам на екрана (преди да се е изпълнила цялата команда). Ако напиша следното:
echo $buff;
sleep(1);
flush();
Това ще прави забавяне от 1 секунда след всеки прочетен символ, но резултата ще го изкара изведнъж, а аз искам примерно още докато прочете пръвия да го изкара веднага, а не след като прочете всички. Мисля, че долу-горе стана ясно за какво говорим. Все още търся решение ама.......
Айде със здраве



Тема Re: != PHPнови [re: pesho]  
Автор salle (Един такъв)
Публикувано18.02.02 12:59



Ами просто PHP не е за тази работа.
То като цяло всъщност и HTML не е за това

Linux is like a wigwam - No Windows, No Gates, Apache inside


Тема Re: != PHPнови [re: salle]  
Авторpesho (Нерегистриран)
Публикувано18.02.02 13:14



Аз мисля да поровя още ден два и да го оставя. Може пък и да не може, но съм длъжен да опитам. Мерси все пак за идеите.



Тема Значи пробвайнови [re: pesho]  
Автор bofh (°) (_) (°)
Публикувано18.02.02 13:20




<?
error_reporting(E_ALL);
flush();
$fp = popen('dir', 'r');
while(!feof($fp)) {
$buff = fgetc($fp); // ili
//$buff = fread($fp, 1024);
print $buff;
flush();
sleep(2);
}
pclose($fp);
?>

Ето го и резултата (не го изтраях докрая :Р)



bofh@B0FH ~
$ nc -v -v -t 192.168.2.115 80
RUMEN [192.168.2.115] 80 (http) open
get /bofh/ls.php
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Mon, 18 Feb 2002 11:13:13 GMT
Content-type: text/html
X-Powered-By: PHP/4.1.1

Volume in drive C ha


Та общо взето прави точно това което трябваше да прави, само провери дали не ползваш някакъв cache на самия сървер, или прокси между теб и сервер-а

Тва е ;)

bofh

Редактирано от bofh на 18.02.02 13:20.



Тема Re: Изпълнение на шел коменда?нови [re: pesho]  
Авторmimkata (Нерегистриран)
Публикувано18.02.02 15:31



Opitaj tova :)))
Vsichko e vyzmojno, stiga da znaesh kak da go napravish :)


<html>
<HEAD>
<?php
if (!empty($proba))
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"3\">";
?>
</HEAD>
<body>

<form action="<?php echo $PHP_SELF ?>" method="post">
<input type=text name="proba" >
<input type=submit name="pro" value="Go">
</form>


<pre>
<?php
system("traceroute $proba");
?>
</pre>
</body>
</html>




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.