我已经看过PHP读取shell_exec实时输出和PHP:在Web浏览器中输出system/Shell_exec命令输出,但无法获得以下工作.
注意:最初,我的shell脚本运行了一些python,但我简化了它.
live.sh
uname -a
date
watch --no-title date
Run Code Online (Sandbox Code Playgroud)
live.php
<?php
$cmd = "sh live.sh";
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>';
?>
Run Code Online (Sandbox Code Playgroud)
该uname和date输出出现在浏览器不错,但watch不输出.
我其实是在尝试不可能的事吗?
我会反对使用手表的方法,你可能比你想象的更麻烦.
首先,长时间运行的命令可能会受到(默认)PHP超时的影响,因此您可能需要调整它.
然后,观看可能使用终端序列来清除屏幕,我不知道这是如何转换为输出代码.
我宁愿建议设置一个客户端机制来定期重复调用服务器端live.php.
SO上的这篇文章将帮助您入门. jQuery,简单的轮询示例
上面的页面使用jquery库,但如果你愿意,你可以使用原生的Javascript等价物.
最简单的例子(来自该页面)将是:
function poll(){
$("live.php", function(data){
$("#output_container").html(data);
});
}
setInterval(function(){ poll(); }, 5000);
Run Code Online (Sandbox Code Playgroud)
在您的页面中,为结果设置容器
<div id="output_container"></div>
Run Code Online (Sandbox Code Playgroud)
在您的示例中,您从脚本中删除监视并将其替换为您要监视的命令.
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |