count = 4; // 进程启动后定时推送数据给客户端 $worker->onWorkerStart = function($worker) use($config) { # 数据库链接不能在主进程,方法外是主进程 $dm = new Dm($config['connections']['dm']); // 每2.5秒执行一次 $time_interval = 3; Timer::add($time_interval, function()use($worker,$dm){ foreach($worker->connections as $connection) { $data = []; # 主动推送对应页面数据 $groupIdArr = []; $groupRes = $dm->select('bt_passenger_monitor_group',['type' => 1]); foreach ($groupRes as $groupRow) $groupIdArr[] = $groupRow['groupId']; $groupIdStr = !empty($groupIdArr) ? implode("|",$groupIdArr) : ''; # 累计服务人数 $data['allGroupNum'] = ['data' => PassFlow::allGroupNum($dm,['groupsId' => $groupIdStr])]; # 24小时 $data['getPassHoursData'] = ['data' => PassFlow::getPassHoursData($dm,['groupsId' => $groupIdStr])]; # 24小时进馆人数 $data['realTimeData'] = ['data' => PassFlow::realTimeData($dm)]; # 各场馆服务人次占比 $data['allGroupTimeNum'] = ['data' => PassFlow::allGroupTimeNum(['groupsId' => $groupIdStr,'granularity' => 'daily'],$dm)]; # 各场馆服务人次趋势 $data['toDayGroupsEnterNum'] = ['data' => PassFlow::toDayGroupsEnterNum($dm,['groupsId' => $groupIdStr])]; $connection->send(json_encode($data)); } }); }; Worker::runAll();