使用php流式传输程序的数据,例如`htop`

时间:2013-03-21 02:59:54

标签: php linux htop

使用其中一个代码

system("htop");
//or
exec('htop');

如何将htop中的数据写入文件或其他内容(脚本的时间限制设置为0,不用担心)

4 个答案:

答案 0 :(得分:2)

htop是一个交互式程序,它在循环中运行直到退出,并且似乎没有提供任何标记来执行单次迭代然后退出,这使捕获输出成为问题。

你考虑过使用top吗?您可以使用-n 1:

将其限制为1次迭代
$resp = system("top -n 1");
print $resp; 

答案 1 :(得分:1)

<?php
`screen  -d -m -S htop_session htop`;
sleep(1);
`screen -p 0 -S htop_session -X hardcopy`;
`screen -p 0 -S htop_session -X quit`;
?>
<pre>
<?php print file_get_contents('hardcopy.0'); ?>
</pre>

答案 2 :(得分:0)

systemexec以字符串形式返回命令的结果。使用fwrite或类似功能将输出保存到文件中。

答案 3 :(得分:0)

我同意@d_g的答案,top是一个打算在终端中运行的程序。我建议使用AJAX来更新频繁的输出

此外,我想添加有关函数passthru()的信息。该函数将shell命令的输出直接打印到php的stdout。在外部程序完成之前,您不需要额外的打印和输出。如果命令需要很长时间才能处理,那很重要。所以你可以替换:

$resp = system("top -n 1");
print $resp; 

通过

passthru('top -n 1');