таймер — В PHP я не могу передать от одного процесса к другому

В timer.php у меня есть это:

$handle = fopen( 'php://stdout', 'wa' ) ;
$unusedEvTimerObject = new EvTimer(0, 1, function ($watchercallback)    use ($handle) { //create & call timer
echo "=>".(Ev::iteration() % 60)."<=";
fwrite( $handle, "Hello World! \n");
} );
Ev::run();
fclose( $handle );

И в child.php у меня есть это:

$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/tmp/error-output.txt", "a")
);

$process = proc_open('php ', $descriptorspec, $pipes);

if (is_resource($process)) {
fwrite($pipes[0], "<? include('app/timer.php'); ?>");
fclose($pipes[0]);

$output = "";
while (!feof($pipes[1])) {
$output .= fgets($pipes[1]);
};
fclose($pipes[1]);

$return_value = proc_close($process);

echo "command returned $return_value\n";
}

Если я призываю timer.php прямо с

$ php app / timer.php

вывод, который я получаю «=> 1<= Привет, мир! => 2<= Привет, мир! «

но если я вызову с $ php app / child.php
Я не получаю вывод, тогда как я ожидаю, что stdout из timer.php перенаправит на child.php и будет напечатан им.

Я немного потрепал & Я предполагаю, что child.php не получает никакой информации, но я не понимаю, почему. HALP!

6

Решение

Вывод $ не печатается в примере кода.

while (!feof($pipes[1])) {
echo fgets($pipes[1]);
};

Вызов $> php child.php затем печатает вывод таймера

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]