首页 >后端开发 >php教程 >如何从 PHP 中运行的进程获取实时输出?

如何从 PHP 中运行的进程获取实时输出?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-14 02:56:10798浏览

How Can I Get Real-Time Output from Running Processes in PHP?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn