【问题标题】:Is it possible to display the commands like 'top' on webpage using php? [duplicate]是否可以使用 php 在网页上显示诸如“顶部”之类的命令? [复制]
【发布时间】:2013-10-24 03:54:03
【问题描述】:

是否可以使用php在网页上显示'top'之类的命令?

   <?php
      echo shell_exec('top');
   ?>

【问题讨论】:

  • 我的意思是可以在浏览器中显示交互式 shell 命令的输出吗?
  • Phil for 'top' 命令我们有 'ps' 但是否无法将其他交互式 shell 的输出显示到浏览器?
  • 使用这个:$str = exec("top -bn1");
  • top 没问题,对于像 tcptrack -i [interface] 这样的命令
  • 除了只能交互之外,tcptrack 还需要 sudo,而 php 通常无法执行(除非您愿意将 sudo 访问权限授予 apache 用户 www-data

标签: php linux


【解决方案1】:

也许是这样的:

<?php
$output = null;
exec('top -n 1', $output);
var_dump($output);
?>

【讨论】:

  • 你应该使用top -bn1(避免格式化垃圾字符)
【解决方案2】:

如果我正确理解了您的问题,那么您正在尝试在客户端上显示一个交互式程序,并提供实时更新。正如您所证明的那样,这是不可能的。

看来您可能不明白 PHP 发生了什么。 PHP 在服务器上运行客户端下载页面之前。然后,客户端在服务器呈现页面时获取页面的“快照”。一旦页面加载到用户的机器上,服务器就无法触摸该页面。

要获得交互式内容,您有几个选择(从最不受欢迎和最容易到最理想和最复杂):

  • 刷新页面
  • 定期请求更新 (AJAX)
  • 让服务器下推更改(COMET、WebSockets)

另一个问题是像top 这样的交互式命令使用了一堆特定于终端的(刷新终端、重写文本位等),这会弄乱浏览器中的输出。您需要像@David 所说的那样做一些事情,获取输出的快照并定期将其提供给用户(从上面选择一个)。

无论您选择哪种方式,都有很多 PHP 库和教程可供使用。

【讨论】:

  • 对不起,我没有得到答案。我只想要任何交互式命令的快照。
  • 恐怕答案将是特定于命令的。交互式命令是可视的,并非旨在由计算机处理。一些命令,如top,将提供非交互式开关。为此,请使用@David 的答案。
猜你喜欢
  • 2019-06-20
  • 2017-02-16
  • 2010-10-15
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多