我有一个来自instructables.com的raspberry pi3运行这个项目 Simple and intuitive web interface for your Raspberry Pi
我需要使按钮起作用,这样一次只有一个用户可以按下按钮,而很多用户可以查看该页面。这是为了控制一个平移/倾斜网络摄像机,其中Button Zero平移摄像机左侧,Button One平移摄像机等。树莓驱动继电器驱动Pelco摄像机平移/倾斜安装中的电机。我无法让一个用户尝试向左平移,而另一个用户在另一个http连接上尝试向右平移。没有登录可以访问这个覆盆子。
是否有Apache2设置来完成此任务?我不认为可以通过向GPIO.php文件添加代码来解决这个问题,或者在那里?我可以使用semophore或$ global标志来限制多个并发查看器的按钮启动吗?
答案 0 :(得分:0)
您需要互斥锁。我可能建议的两种快速而肮脏的方式。
打开文件,并将其锁定以便写入。
在此期间,如果其他用户试图控制相机,您将首先尝试打开此文件并将其锁定以进行写入,并且会因错误而失败。
此时你知道你不能给予第二个用户控制权。
注意:您可以为不同的锁使用多个不同的文件。例如,如果您有多个摄像头,则可以使用多个文件锁定,每个摄像头一个。
使用像MySQL这样的数据库,您可以锁定表中的特定行,实际上与上一个示例中的文件一样。
如果第二个用户出现,我们再次尝试锁定同一行,我们将失败,此时我们可以拒绝第二个用户的请求。
注意:您可以使用多行,其中每行可以表示如上所述的其他相机。
我强烈建议您的用户能够查看他们是否是当前用户,并实施一种在用户之间公平切换的方法,以便单个用户可以充分享受所有乐趣。也许就像15或30秒定时器一样简单,它可以在当前活动用户之间切换控制。