在网页上获取实时Linux服务器日志

时间:2017-06-09 07:41:49

标签: php html linux

我正在使用Linux服务器并运行少量shell脚本,执行诸如升级包等任务,而不是ssh到服务器并运行脚本我正在为用户创建一个Web界面,通过它脚本可以执行,我使用PHP shell_exec()函数来执行脚本。在server.log文件中启动和完成特定包之前添加了日志。

我想在网页上实时显示这些日志。

最有效的方法是什么?

我可以运行无限循环来检查文件是否被修改(效率不高)

感谢您的帮助!

1 个答案:

答案 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>';

此代码应运行命令并在运行时将输出直接推送给最终用户。