[英]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.