我正在使用嵌入式Linux设备并寻找一种方法来让我的应用程序代码与Web界面进行通信。我需要在设备Web界面上显示来自应用程序的一些状态信息,并且还希望能够通知应用程序任何用户操作,例如上传的文件等.PHP-似乎是制作界面的好方法,但是沟通部分更难。我找到了以下选项,但不确定哪种选择最简单,最方便。
套接字。必须先为PHP启用套接字才能尝试此操作。不知道启用是否会占用更多空间。
数据库。看起来像是一种过度杀伤解决方案。
共享文件。好像很多工作。
命名管道。尝试了一些成功,但不确定是否会出现问题,例如同时加载页面。也许套接字更容易?
最好的方法是什么?有什么我完全不知道的吗?如何在众多基于Linux的商用网络交换机中完成这项工作?
答案 0 :(得分:1)
它是什么类型的设备?
如果使用类似共享文件的内容,设备将如何更新?
命名管道如何遇到套接字会避免的并发问题?
在从设备到PHP的通信方面,文件看起来很完美。 PHP可以使用像file_get_contents()这样的基本内容,设备可以只写入文件。如果您担心文件更新为快速检查的时刻。
就PHP通知设备做什么而言,我也倾向于文件。让设备观察一个目录,并让脚本在那里创建一个文件,例如file_put_contents($ path.unuqid(),$ command);这样两个脚本应该在确切的sime时间运行,你只需要两个文件供设备使用。
答案 1 :(得分:1)
我最近使用套接字做了一些非常相似的事情,并且效果非常好。我有一个与设备通信的Java应用程序,它在服务器套接字上监听,而PHP应用程序是客户端。
因此,在您的情况下,PHP客户端将初始化连接,然后服务器可以回复设备的状态。
有很多关于如何使用大多数语言进行客户端/服务器套接字通信的教程,因此不需要花太长时间才能搞清楚。
答案 2 :(得分:0)
用于使用Web界面进行路由的嵌入式Linux机箱不使用PHP。他们使用CGI并使用shell脚本提供网页。
为了从应用程序获取信息到Web界面,共享文件选项对我来说似乎最合理。应用程序只需将信息写入PHP读取的文件中即可。
另一方面,它起初看起来并不那么好。 PHP支持锁定文件,但它很可能在系统级别上不起作用。也许一个解决方案是,实际上每个具有应用程序信息的PHP脚本都会创建自己的文件(具有唯一的id文件名,例如基于时间戳+随机值)。应用程序可以查看指定目录以弹出这些文件。处理后,它可以删除它们。为此,应用程序只需要对目录具有写入权限(因此文件所有权不是问题)。
答案 3 :(得分:0)
如果可能,请使用shell脚本。
我做了类似的事情,我写了一个视频监控应用程序。视频部分由动作处理(一个伟大的FOSS包)。该应用程序是标准化硬件的交钥匙解决方案,用于监控老虎机赌场。它在当地作为信息亭系统,可通过互联网访问。我在PHP中编写了所有UI代码,本地显示是一个严密锁定的KDE桌面,全屏浏览器默认为localhost。我使用shell脚本与运动和操作系统进行交互。
再想一想: 如果您可以在设备上使用自编译应用程序:编写一个返回所需值的简单程序,并使用PHP的exec()或passthru()或system()。