gpt4 book ai didi

php - 通过多用户网页重复执行linux程序而不崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:32 25 4
gpt4 key购买 nike

我正在开发一个硬件项目,该项目(当前)使用 Beaglebone Black(最终将使用定制硬件),并尝试在其 Web 服务器上设置一个网页,以循环方式返回所有四个 LED 的实时状态。我希望这个网页能够被多人同时访问。

我已经让网页实时更新 LED 的值,但问题是,如果网页的两个实例打开,它们就会开始表现得很奇怪,最终崩溃。

网页使用 jquery 计时器,每 10 毫秒执行一次。

<script>
var Timer=setInterval(function(){GetLed()}, 10);

function GetLed()
{
$("#div1").load("getled3.php");

}
</script>

getled3.php使用php执行4个linux命令(但随着我们扩展网页的能力,这些最终可能是C++程序),并打印结果:

<?php 

exec("cat /sys/class/leds/beaglebone:green:usr0/brightness", $Led0);
exec("cat /sys/class/leds/beaglebone:green:usr1/brightness", $Led1);
exec("cat /sys/class/leds/beaglebone:green:usr2/brightness", $Led2);
exec("cat /sys/class/leds/beaglebone:green:usr3/brightness", $Led3);

print($Led0[0] . ", " . $Led1[0] . ", " . $Led2[0] . ", " . $Led3[0]);

?>

我愿意自己研究如何创建一个能够与多个用户良好配合的 Web 应用程序,但到目前为止,我的搜索还没有找到任何有用的结果,这可能只是我的措辞。

如果有人可以发布一些链接,为我指明创建控制硬件的 Web 应用程序的正确方向,那将是最有帮助的,因为最终的实现将非常复杂,并且可能包括循环运行“主”应用程序的硬件,而网页为用户提供了更改硬件设置的能力。

我想我们正在做的事情的最好例子就是动态路由器设置页面。

提前致谢。在此期间我将继续寻找。

<小时/>

编辑:(包含对评论的回复)

我想看看是否有一个标准方法可以做到这一点,或者至少是一个最佳实践。最终产品最终将允许用户更改硬件上的设置、强制硬件向其他硬件发送信息、读取有关该硬件和连接到 beaglebone black 的其他硬件的信息。它最终会变得相当广泛,所以我真正需要的是一种资源(也许是一本书),我可以在其中阅读有关此类事情通常是如何完成的。

整个系统最终将包含 PWM、GPIO、ADC 等。

至于访问 LED 的方法,我知道“exec cat”并不是获取该信息的最佳方法。

此后我更改了整个设置,现在,当 beaglebone black 启动时,它会加载一个循环运行的 C++ 程序,并写入包含硬件信息的文件。

然后,最初运行“exec cat”的网页调用现在只是将程序的输出文件加载到浏览器中。这解决了崩溃问题,但感觉不是完成该项目的正确方法,因为其中会有大量包含有关 ADC 值、PWM 值等信息的文件。为了进一步复杂化,文件访问实际上需要一个互斥体来防止 C++ 程序在 Web 程序读取文件时写入文件,并且需要一个互斥体来防止 Web 程序在 C++ 程序当前正在写入文件时读取文件。这将使每个进程产生 3 个文件。

最佳答案

一种方法是构建一个 shell 脚本,用 LED 状态设置局部变量。然后你把这个脚本作为一个 cron 作业(每 10 毫秒启动一次或任何你想要的)。

之后只需要获取局部变量的值即可。

关于php - 通过多用户网页重复执行linux程序而不崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com