来自Zend的passthru的PHP Live输出

时间:2012-10-05 20:00:33

标签: php zend-framework exec command-line-interface

我正在使用PHP + Zend构建一些CLI进程(是的,我也讨厌它),我有一个奇怪的问题,我不知道如何修复exec()或passthru()命令的输出

简而言之,我有 testexecAction

fwrite(STDOUT,"First\n");
passthru("ping -c 3 192.168.18.10");
fwrite(STDOUT,"Second\n");

当我使用我为Zend制作的CLI界面调用它时,我得到以下输出

~ php console.php --funcion testexec
First
Second
PING 192.168.18.10 (192.168.18.10): 56 data bytes
64 bytes from 192.168.18.10: icmp_seq=0 ttl=64 time=0.692 ms
...

如您所见,passthru命令的输出正在打印,但是它打印在“Second”行之后,就像它被保存在某个缓冲区某处,我想改变这种行为,所以输出没有缓冲,但是我不知道如何完成它。 其背后的原因是我使用passthru / exec来调用其他长的php进程,我希望看到输出的实时和顺序

我猜它是某个地方的Zend选项,但我不确定“某个地方”,因为我已经使用原始PHP进行了其他测试,输出没有缓冲但直接打印到控制台。

我的Zend CLI界面非常简单

$_SERVER["REQUEST_URI"] = "/console/" . getConsoleArg("-function");
$application->bootstrap()
    ->run();

1 个答案:

答案 0 :(得分:0)

我修复了它调用ob_flush();在我的内部过程输出。