【问题标题】:PHP Live Output from a passthru with Zend来自 Zend 的 passthru 的 PHP 实时输出
【发布时间】:2012-10-05 20:00:33
【问题描述】:

我正在使用 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();

【问题讨论】:

  • 你为什么不改用system

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多