我自己写了一个通讯协议,硬件发送数据过来的时候,在Events.php可以接收得到;但项目是用Thinkphp3.2.3写的,我现在想把这个接收到的数据推送给Thinkphp处理一些逻辑上的问题或者说是把这个数据存到数据库中。
很多朋友建议我用websocket来处理,官方手册我也看了,也是介绍websocket;
但我想说的是,我的硬件设备只能连到gatewayworker,在只有硬件的情况下(硬件开机后就会自动发送指令,这个时候),有没有什么办法,把数据发送到gatewayworker上的时候,Thinkphp直接把这个接收到的数据存到数据库,或者说gatewayworker怎么把数据库推送到Thinkphp去处理。
还有一点:我的硬件信息是硬件工程提供的,已经写死了,我能从他那里拿到的都只是一些硬件的指令
PS:gateway_client在PHP中是个什么作用?只是为了给gatewayworker推送数据的话,我能够直接推给我的硬件吗?
要是有示例代码就更好了。万分感谢!
GatewayWorker收到消息后可以curl调用TP啊
GatewayClient是可以在TP里远程调用Gateway给客户端(你这里就是硬件)推送消息的
我有设备(也就是硬件),也有手机端界面。如果设备量大或者手机端用户量多的情况下,curl把数据发送给TP 的时候会不会靠成gatewayworker阻塞?
如果只是存数据库的话,那直接存就好了。我也是做的硬件,所有逻辑都在Gateway下处理了。解决办法还是有很多的,主要看怎么做合适。
楼主做出来了吗,我现在也是跟楼主有一样的需求
最简单的办法是在 GatewayWorker 里面直接操作数据库,如果会很频繁也不建议操作数据库 ,直接搭配redis之类的使用,tp的接口请求的时候直接去redis获取设备信息
在event.php里面处理 可以用composer require workerman/mysql组件 直接在onMessage里面处理数据
当然也可以用curl的方式去调用tp写的api接口处理