使用 PHP Shell 执行实时输出
PHP 中的 Shell 执行,使用 shell_exec 和 exec 等函数,有利于与操作系统。但是,默认情况下,这些函数仅在命令完成后才显示整个输出。这限制了监控进度或显示实时更新的能力。
解决方案:释放实时输出
为了实现实时输出显示,PHP 提供了两种主要的选项:
popen() 用于并行交互:
popen() 允许您与子进程建立双向通信通道。这使您能够像读取文件一样读取和写入子进程。通过使用循环和 fread(),您可以捕获输出并动态显示它。
passthru() 用于直接输出:
对于更简单的方法,可以使用 passthru() 将命令的输出直接打印到浏览器。它提供了一种无需中间存储即可流式传输结果的便捷方法。
使用 popen() 的代码示例:
// Ensure flushing of output buffers while (@ ob_end_flush()); // Open the child process for reading $proc = popen($cmd, 'r'); echo '<pre class="brush:php;toolbar:false">'; // Keep reading and displaying output until EOF while (!feof($proc)) { echo fread($proc, 4096); flush(); } echo ''; // Close the process pclose($proc);
注意:
以上是如何在 PHP 中获取 Shell 命令的实时输出?的详细内容。更多信息请关注PHP中文网其他相关文章!