You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.2 KiB
54 lines
2.2 KiB
<?php
|
|
/**
|
|
* 体育
|
|
*/
|
|
use Workerman\Worker;
|
|
use Workerman\Timer;
|
|
use app\common\dm\Dm;
|
|
use app\common\logic\PassFlow;
|
|
require_once __DIR__ . '/workman/vendor/autoload.php';
|
|
require_once __DIR__ . '../../source/application/common/dm/Dm.php';
|
|
require_once __DIR__ . '../../source/application/common/logic/PassFlow.php';
|
|
require_once __DIR__ . '../../source/thinkphp/helper.php';
|
|
require_once __DIR__ . '../../source/thinkphp/library/think/Config.php';
|
|
require_once __DIR__ . '../../source/application/common.php';
|
|
$config = require_once __DIR__ . '../../source/application/database.php';
|
|
|
|
$worker = new Worker('websocket://0.0.0.0:1235');
|
|
$worker->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();
|