workerman的socketio跑了十几个小时后,广播不了

好人一枚

求大神指导下
我在linux服务器上,用screen开了socketio。前面几个小时就可以正常运行,比如把客户端分组,然后广播什么的。但是后面总是跑了十几个小时后,客户端连的上,但是就是只能触发连接时的函数,然后其他都触发不了。网上找了很多资料也不知道怎么改,打算实在不行就写个定时脚本在开启一遍。大神们有什么更好的解决办法吗


self::$sender_io->on('connection', function($socket){
            // 当客户端发来登录事件时触发
            $socket->on('login', function ($uid)use($socket){
//                global $uidConnectionMap, $last_online_count, $last_online_page_count;
                // 已经登录过了
                if(isset($socket->uid)){
                    return;
                }
                // 更新对应uid的在线数据
                $uid = (string)$uid;
                if(!isset(self::$uidConnectionMap))
                {
                    self::$uidConnectionMap = 0;
                }
                // 这个uid有++$uidConnectionMap个socket连接
                self::$uidConnectionMap=1+self::$uidConnectionMap;
                // 将这个连接加入到uid分组,方便针对uid推送数据
                $socket->join($uid);
                $socket->uid = $uid;
                // 更新这个socket对应页面的在线数据
                $last_count=self::$last_online_count;
                $last_page_count=self::$last_online_page_count;
                $socket->emit('update_online_count', "当前<b>{$last_count}</b>人在线,共打开<b>{$last_page_count}</b>个页面");
            });
``` 
 
 
2722 1 0
1个回答

walkor

贴所有代码以及你的测试方法

  • 暂无评论
年代过于久远,无法发表回答
🔝