PHP читает вывод консоли - PullRequest
2 голосов
/ 28 августа 2009

Хорошо, вот в чем дело. Мне нужно прочитать вывод (тот, который вы обычно видите в консоли Linux). Моя самая большая проблема заключается в том, что мне не нужно читать результат линейного выполнения, а что-то вроде wget http://ubuntu.com/jaunty.iso и показывать его ETA.

Кроме того, рабочий процесс выглядит следующим образом:

S - веб-сервер

C 1 - компьютер1 во внутренней сети S

C 2 - компьютер 2 во внутренней сети S

и т. Д.

Пользователь подключается к S, который подключается к C x , затем запускает wget, top или другую команду регистрации консоли (по запросу пользователя). Пользователь может видеть «консольный журнал» из C x , в то время как wget загружает указанную цель.

Это правдоподобно? Можно ли это сделать без использования программного обеспечения сервера / клиента?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 31 августа 2009

Для этого вам понадобится функция php proc_open - вы можете указать массив каналов (stdin, который обычно подключается к клавиатуре, если вы находитесь на консоли, std out и stderr, оба обычно выводятся на дисплей). Затем вы можете управлять вводом / выводом следующей программы

Так в качестве примера:

$pipes = array();
$pipe_descriptions = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);

$cmd = "wget $url";

$proc_handle = proc_open($cmd, $pipe_descriptions, $pipes);

if(is_resource($proc_handle))
{
   // Your process is running. You may now read it's output with fread($pipes[1]) and fread($pipes[2])
   // Send input to your program with fwrite($pipes[0])
   // remember to fclose() all pipes and fclose() the process when you're done!
0 голосов
/ 28 августа 2009

У вас есть какой-нибудь существующий PHP-код, над которым вы работаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...