>我有一个在终端中运行的脚本,该脚本每 2 秒轮询一次服务器,从 PHP 脚本中获取 0 或 1,然后根据结果执行命令。
不重要的说明:它运行在树莓派上。
所以我的问题是:有没有更好的方法来与服务器通信?理想的是类似于 socket.io 或html5 websocket类型的连接,但具体而言,这些连接无法从终端进行。
这是我所拥有的,以便您了解要点
while :
do
gpio mode 0 out
gpio mode 7 out
var1=$(curl http://url.com/index.php)
L1=$(echo $var1 | cut -c1-1)
L7=$(echo $var1 | cut -c7-7)
if [ $L1 == 0 ]; then
gpio write 0 0
elif [ $L1 == 1 ]; then
gpio write 0 1
fi
if [ $L7 == 0 ]; then
gpio write 7 0
elif [ $L7 == 1 ]; then
gpio write 7 1
fi
gpio readall
sleep 2
done
编辑:我需要在同一台服务器上使用它运行大约 1000 个树莓派单位,我只是在寻找最有效的方法。
有很多方法可以做到这一点。HTTP不是最适合的协议(因为它不支持会话),但因为你已经在使用它了。让我们看一下HTTP的解决方案。
代替轮询(这很昂贵但易于实现),您可以将数据从服务器推送到客户端。
要使用HTTP执行此操作,请使用COMET,这是用于执行此操作的几种不同技术的总称。见 http://en.wikipedia.org/wiki/Comet_%28programming%29
使用 nginx 执行此操作,您需要一个额外的模块,例如:https://github.com/wandenberg/nginx-push-stream-module