Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[PHP]Слежка за тем что выводит запущенный процесс в консоль |

15.12.2009, 12:49
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
Провел на форуме: 140661
Репутация:
313
|
|
[PHP]Слежка за тем что выводит запущенный процесс в консоль
Здравствуйте. Заинтересовала меня следующая вещь. Можно ли как-то через PHP запустить wget, и при этом следить за всем что он выводит?
То есть запустил скачивать фильм например, и с помощью AJAXa на страчке постоянно обновляется то? что выводит wget (кол-во скачанных процентов, скорость)?
|
|
|

15.12.2009, 14:37
|
|
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме: 1455812
Репутация:
150
|
|
PHP код:
<?php
echo system("wget ...");
?>
Вывод можешь парсить и извращаться как хочешь )))
|
|
|

15.12.2009, 16:38
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
Проблема в том что результат ты не будеш получать порциями, это нужно внедрятся в сам процесс, а пыхе насколько знаю нет такой возможности.
|
|
|

15.12.2009, 17:56
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
Провел на форуме: 140661
Репутация:
313
|
|
>> Проблема в том что результат ты не будеш получать порциями
Ага, вот с этим я и думаю как справится...Наверное придётся запускать wget с опцией ведения лога и из него как-то формировать отчёт в веб-часть.
|
|
|

15.12.2009, 19:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Проблема не в порционности, а в асинхронности пхп. К примеру постепенный вывод wget'а (в приделах пхп) можно получать так:
PHP код:
$proc = popen('wget http://some_url 2>&1','rb');
while (!feof($proc))
{
$data=fgets($proc,100);
// \r нужно чтобы строка каждый раз затиралась
echo "\r".trim($data);
}
pclose($proc);
Проблема только куда это записывать, чтобы аяксом считывать и скидывать в браузер. Например можно через файлы:
PHP код:
$i=0;
$proc = popen('wget http://some_url 2>&1','rb');
// Открываем некоторый файл, в дальнейшем аяксом его читаем
$f = fopen('test_popen.txt','wb');
while (!feof($proc))
{
for($j=0;$j<50;$j++) $data=fgets($proc);
fwrite($f, "Line number:".($i++).' = '.trim($data).' ');
fflush($f);rewind($f);
}
fclose($f);
pclose($proc);
Тут не учтены гонки при чтении/записи.
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
|
|
|

16.12.2009, 08:41
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
Провел на форуме: 140661
Репутация:
313
|
|
Gifts, большое спасибо! Именно то что нужно!
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|