繁体   English   中英

如何使用PHP的实时反馈运行shell脚本?

[英]How to run shell script with live feedback from PHP?

如何在向浏览器提供持续/实时反馈的同时从PHP执行shell脚本? 我从系统功能文档中了解到:

如果PHP作为服务器模块运行,system()调用还会尝试在每行输出后自动刷新Web服务器的输出缓冲区。

通过将其作为“服务器模块”运行,我不清楚它们的含义。

PHP代码示例:

<?php

system('/var/lib/script_test.sh');

示例shell代码:

#!/bin/bash

echo "Start..."
for i in {1..10}
do
        echo "$i..."
        sleep 1
done
echo "Done."

这样做:它将等待大约10秒,然后刷新到输出缓冲区。

我想要这样做:在每行输出后刷新到输出缓冲区。

这可以使用popen()来完成,它为您提供了打开任何进程的标准输出的句柄。 可以使用ob_flush()将数据块发送到客户端,可以使用XHR显示数据。

一种选择是写入shell脚本中的文件,在每一步中说明它的位置。 在您的网页上,每隔X秒/分钟使用一次ajax调用。 ajax调用将调用PHP脚本,该脚本读取状态文件并返回状态或已完成的步骤。

这种方法的优点是页面实时信息可供多个访问者使用,而不仅仅是实际启动shell脚本的访问者。 显然,根据您的需要,可能会或可能不会。

当然缺点是ajax间隔越长,更新过期就越多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM