0

我正在使用 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 命令的输出正在打印,但在“第二”行之后打印,就像它被保存在某个缓冲区中一样,我想更改此行为,以便输出不缓冲,但我没有想法如何完成它。其背后的原因是我正在使用 passthru/exec 来调用其他长的 php 进程,我想实时查看输出并按顺序排列

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

我的 Zend CLI 界面相当简单

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

1 回答 1

0

我修复了它调用 ob_flush(); 关于我的内部流程输出。

于 2013-02-14T16:38:26.373 回答