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