我是想实现通过PHP来制作一个B/S架构的控制系统,可以实时监控设备的状态,并且可以给设备发送指令。
现在的情况是,网站A跟设备控制程序B(C来写)不在一台服务器上,所以需要两者之间进行通信。A需要获取B的最新参数及状态,A也需要向B发送操作指令。A我来写,B我的小伙伴来写。
我先说一下我初步构思方案:
第一种,使用HTTP轮询问。在A服务器上搭建MYSQL数据库,用来存储系统状态和指令队列。如果A需要向B发送指令,那么就存到数据库中,等待B的轮训到来,取走指令队列,同时送来最新的设备状态数据。 [问题在于:实时性不强,而且轮询的话我感觉更容易丢包。]
第二种,使用socket。在A服务器上搭建MYSQL数据库,用来存储系统状态。如果A需要向B发送指令,那么就直接发送给B,B每个一段时间送来最新的设备状态数据。 [问题在于:我没用过socket,需要现学,所以不太熟练。而且对于socket掉线或者各种意外的处理能力不足。]
请问,A与B如何进行通信有什么好的方案?
补充:
1、我只会做网站,用PHP+MYSQL。小伙伴只会硬件,还略懂C#,但是对软件(网站)开发一窍不通。
2、如果推荐的是HTTP轮询,那么请问A需要发送指令给B,有什么比较及时的方法。
3、如果推荐的是socket,那么请问A是不是需要cli模式下的socket服务器php程序保持永久运行?不会有什么不稳定问题吧?
4、希望可以得到比较完全的方案描述。
5、我是一个小白,现在想到的思路都很陈旧,希望可以得到让我眼前一亮的想法或者业内普遍使用的方案。
另外问一个小白问题:HTTP的轮询跟socket连接以后相互发送数据,本质区别有吗?socket稳定性会比HTTP轮训强吗?
谢谢各位啦。
1
9hills 2015-05-21 00:29:34 +08:00 via iPhone
通信链路优质的话,结合你的背景,用定时轮询的方式是最简单的。因为你只有一个client 直接心跳周期设为1s就好了。
其他办法很多,但是在你这个例子里我觉得没啥必要。 |
2
9hills 2015-05-21 00:31:46 +08:00 via iPhone
主要是你的小伙伴不会写你能连上的server ,所以只能你做server 了
|
9
9hills 2015-05-21 11:30:44 +08:00
|