2

所以,我有这种情况:

运行 Debian、XAMPP 和一些 CLI 应用程序的嵌入式设备。

这些 CLI 应用程序是交互式的,它们每秒更新一次数据,用户可以向终端输入命令来改变它们的行为。

如何在不使用终端的情况下在 PHP/HTML 启动/停止/交互/读取这些应用程序中的数据中构建 WebGui?我应该使用 proc_open 还是 exec?在不创建 CPU 杀手循环的情况下更新数据的最佳方法是什么?

谢谢你。

4

1 回答 1

1

交互式应用程序是什么意思?您是通过从 shell 调用(如user@device$ application --stop)向他们发送命令,还是他们提供自己的 shell(如 postgres 或 mysql CLI 客户端等)?

使用 exec() 发送命令并读取输出:

$ls_output = exec('ls -l');

您可以通过简单地将其重定向到文件并在加载网页时使用 PHP 从该文件中读取来保存持续的应用程序输出。添加一些 javascript 以自动重新加载页面,例如,每 10 秒一次,它不会占用 CPU。像这样的东西:

user@device$ application --do-some-work > application_output

在 PHP 中:

$app_output = file_get_contents("application_output");

甚至使用 GNU CLI 工具和 PHP exec():

$app_output = exec('tail -n 100 application_output | grep FAIL');

但这似乎更像是发明自行车,因为您可以在 PHP 中过滤输出数据。

于 2012-05-30T12:33:07.503 回答