首页 > 后端开发 > php教程 > 如何执行和终止实时PHP进程?

如何执行和终止实时PHP进程?

Patricia Arquette
发布: 2024-12-05 08:26:11
原创
661 人浏览过

How to Execute and Terminate Realtime PHP Processes?

PHP 中的实时进程执行和终止

本题探讨如何在网页上执行进程并实时接收其输出,无需等待该过程完成。问题的第二部分解决了如何在用户离开页面时终止此类进程。

在 PHP 中执行进程并流式传输其输出的一种方法是通过 proc_open() 函数。该函数允许创建一个可以独立于 PHP 父进程运行的子进程。为了方便实时输出,您可以指定 $descriptorspec 参数和适当的文件描述符来捕获进程的 stdout 和 stderr 流。

$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());
登录后复制

子进程创建后,可以使用循环不断地捕获进程的 stdout 和 stderr 流。从 stdout 管道读取并打印输出。

echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";
登录后复制

要在用户离开页面时终止子进程,可以使用 PHP shutdown 功能。关闭函数在 PHP 脚本终止时执行,这可能在用户关闭浏览器选项卡或离开页面时发生。在关闭函数中,可以对子进程句柄调用 proc_close() 来终止子进程。

register_shutdown_function(function() {
  proc_close($process);
});
登录后复制

以上是如何执行和终止实时PHP进程?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板