首页 > 后端开发 > php教程 > 如何从 PHP Shell 命令执行获取实时更新?

如何从 PHP Shell 命令执行获取实时更新?

DDD
发布: 2024-12-01 04:36:16
原创
812 人浏览过

How Can I Get Live Updates from PHP Shell Command Execution?

具有实时更新的 PHP Shell 输出

PHP 提供了多个用于执行 shell 命令的函数,包括 shell_exec、exec、system 和 passthru。但是,这些函数通常会等到命令完成后再显示结果。如果您希望在执行过程中查看命令的实时输出,请考虑以下替代方案:

选项 1:使用 popen() 进行并行执行

popen() 函数在 PHP 脚本和运行 shell 命令的单独进程之间打开一个管道。这允许您的脚本与进程交互,实时读取其输出。

<?php
$cmd = 'ping -c 10 127.0.0.1';
$proc = popen($cmd, 'r');

echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    flush();
}
echo '
'; ?>
登录后复制

此代码运行 ping 命令并在其可用时显示其输出。

选项 2:使用 passthru() 进行实时输出

passthru() 函数直接将命令的输出发送到用户的浏览器,允许您跳过实时更新并在结果出现时显示结果。

<?php
echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
'; ?>
登录后复制

优化提示:

  • 通过调用禁用会话缓冲session_write_close() 以防止其干扰并行执行。
  • 设置 header如果您的服务器位于 nginx 网关后面,则“X-Accel-Buffering: no”以防止 nginx 中断实时输出。

通过使用这些技术,您可以启用 shell 命令输出的实时更新您的 PHP 脚本,增强用户体验并提供对命令执行的实时洞察。

以上是如何从 PHP Shell 命令执行获取实时更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

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