TP5整合workerman,在windows上正常,在mac,linux上时而成功时而失败

问题:

在windows上正常,在mac,linux上时而成功时而失败

追代码,调用sendMessageByUid,打印 $this->uidConnections[$uid] 为空

代码如下:

/**

     * 每个进程启动
     * @param $worker
     */
    public function onWorkerStart($worker)
    {
        // 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符
        $inner_text_worker            = new \Workerman\Worker('text://0.0.0.0:5678');
        $inner_text_worker->reusePort = true;
        $inner_text_worker->onMessage = function ($connection, $buffer) {
            // $data数组格式,里面有uid,表示向那个uid的页面推送数据
            $data = json_decode($buffer, true);
            // $socket_id  = $data['socket_id'];


            // 通过workerman,向uid的页面推送数据
            $ret = $this->sendMessageByUid($data['equipment_number'], $data['info']);
            // 返回推送结果
            $connection->send($ret ? 1 : 2);


        };
        // ## 执行监听 ##
        $inner_text_worker->listen();
    }


    // 针对uid推送数据
    public function sendMessageByUid($uid, $message)
    {
        if (isset($this->uidConnections[$uid])) {
            $connection = $this->uidConnections[$uid];
            $connection->send($message);
            return true;
        }
        return false;

    }

解决方案:在linux系统中将进程修改为1,完美解决!快去试试吧,百发百中!

你可能感兴趣的:(TP5整合workerman,在windows上正常,在mac,linux上时而成功时而失败)