PHP 中运行进程的实时输出
在 Web 开发中,经常需要在服务器上执行进程并显示其进程实时输出到客户端。此功能对于监控系统资源、收集日志或与外部工具集成等任务至关重要。
通过实时输出执行命令
执行进程并在 PHP 中捕获其输出,您可以使用 proc_open() 函数。此函数允许您指定命令、输入/输出流以及运行进程的其他选项。以下示例演示如何使用 proc_open() 执行 'ping' 命令并流式传输其输出:
$cmd = "ping 127.0.0.1"; $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to ); flush(); $process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array()); echo "<pre class="brush:php;toolbar:false">"; if (is_resource($process)) { while ($s = fgets($pipes[1])) { print $s; flush(); } } echo "";
在此脚本中,执行 'ping' 命令,并将其标准输出重定向到管道。该循环不断从管道读取并将输出打印到网页。
终止实时进程
加载页面时,“ping”进程启动并继续运行直到页面关闭。要在页面卸载时正确终止进程,可以使用 proc_terminate() 函数:
proc_terminate($process);
该函数将向进程发送信号以终止其执行。
以上是如何从 PHP 中运行的进程获取实时输出?的详细内容。更多信息请关注PHP中文网其他相关文章!