GatewayWorker 物联网问题

ssyyz

问题描述

物联网循环发送命令,因为下位机是单项通道,所以要一项一项命令发送,长时间开启服务的话,比如第二天,他就只会返回数组第一个命令的操作,别的命令都没有收到或者没有返回,你们有这种情况吗?求解,是我写的有问题吗?
现在的情况是:一个进程链接多个设备(几十个),循环发送命令查询数据。

报错信息

public static function onConnect($client_id)
    {
        var_dump("Link id:".$client_id.",Time:".date("Y-m-d H:i:s",time()));
        global $redis;

        $redis->set("id".$client_id,0);
        $hexbin1 = array(
            "010310060004A0C8",
            "01031214000dC173",
            "0103130A0006E14E",
            "020310060004A0FB",
            "02031214000dC140",
            "0203130A0006E17D"
        );
        $client_id = Timer::add(2, function()use($client_id,$hexbin1,$redis){
            if(Gateway::getUidByClientId($client_id)){
                Gateway::sendToClient($client_id, hex2bin($hexbin1[$redis->get("id".$client_id)]));
                if($redis->get("id".$client_id)==5){
                    $redis->set("id".$client_id,0);
                }else{
                    $redis->set("id".$client_id,(int)$redis->get("id".$client_id)+1);
                }
            }

        });
    }

截图报错信息里报错文件相关代码

这是前一天我重启服务后的截图(重启后数据就会恢复正常)

这是第二天早晨的数据

操作系统及workerman/webman等框架组件具体版本

windows系统(客户是win我也不好搞,我明白linux适合做生产环境)

335 0 2
0个回答

🔝