我正在使用Linux服务器并运行少量shell脚本,执行诸如升级包等任务,而不是ssh到服务器并运行脚本我正在为用户创建一个Web界面,通过它脚本可以执行,我使用PHP shell_exec()函数来执行脚本。在server.log文件中启动和完成特定包之前添加了日志。
我想在网页上实时显示这些日志。
最有效的方法是什么?
我可以运行无限循环来检查文件是否被修改(效率不高)
感谢您的帮助!
答案 0 :(得分:0)
要阅读流程的输出,popen()
是可行的方法。您的脚本将与程序并行运行,您可以通过读取和写入输出/输入来与它进行交互,就好像它是一个文件一样。
但是,如果您只想将结果直接转发给用户,则可以删除废话并使用passthru()
:
echo '<pre>';
passthru($cmd);
echo '</pre>';
现在,如果要在程序运行时在运行时显示输出,可以执行以下操作:
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen($cmd, 'r');
echo '<pre>';
while (!feof($proc))
{
echo fread($proc, 4096);
@ flush();
}
echo '</pre>';
此代码应运行命令并在运行时将输出直接推送给最终用户。