首页 >后端开发 >php教程 >如何在 PHP 中获取实时进程输出并优雅地终止进程?

如何在 PHP 中获取实时进程输出并优雅地终止进程?

DDD
DDD原创
2024-12-19 17:28:14630浏览

How Can I Get Real-Time Process Output and Gracefully Kill Processes in PHP?

PHP 中的实时流程输出

在网页上运行实时输出的流程可以增强用户体验并提供即时的服务反馈。在 PHP 中,可以使用 proc_open() 函数来实现此目的。

获取实时输出

要从进程获取实时输出,请使用 proc_open () 如下:

$cmd = "ping 127.0.0.1";
$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);

$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());

// Display output
echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";

在这段代码中,ping 进程的输出是连续读取的管道 $pipes[1] 并显示。

在页面退出时终止进程

要在页面退出时终止进程,请使用以下代码:

register_shutdown_function(function() use ($process) {
    proc_terminate($process);
    // Wait for process to terminate gracefully
    proc_close($process);
});

此代码注册一个关闭函数,该函数在脚本退出时终止进程。它还优雅地等待进程完成后再关闭它。

通过利用 proc_open() 和 register_shutdown_function(),您可以在 PHP 中执行进程并获取其实时输出。当页面退出时,进程会自动终止,以防止任何延迟的系统资源。

以上是如何在 PHP 中获取实时进程输出并优雅地终止进程?的详细内容。更多信息请关注PHP中文网其他相关文章!

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