Browse Source

ws自动推送数据脚本

master
wanghongjun 3 years ago
parent
commit
68ee60ef3a
  1. 35
      web/ws_task_real.php
  2. 54
      web/ws_task_real_ty.php
  3. 46
      web/ws_task_real_wh.php

35
web/ws_task_real.php

@ -1,5 +1,7 @@
<?php <?php
/**
* 总览
*/
use Workerman\Worker; use Workerman\Worker;
use Workerman\Timer; use Workerman\Timer;
use app\common\dm\Dm; use app\common\dm\Dm;
@ -12,7 +14,7 @@ require_once __DIR__ . '../../source/thinkphp/library/think/Config.php';
require_once __DIR__ . '../../source/application/common.php'; require_once __DIR__ . '../../source/application/common.php';
$config = require_once __DIR__ . '../../source/application/database.php'; $config = require_once __DIR__ . '../../source/application/database.php';
$worker = new Worker('websocket://0.0.0.0:2000'); $worker = new Worker('websocket://0.0.0.0:1234');
$worker->count = 4; $worker->count = 4;
// 进程启动后定时推送数据给客户端 // 进程启动后定时推送数据给客户端
$worker->onWorkerStart = function($worker) use($config) { $worker->onWorkerStart = function($worker) use($config) {
@ -22,12 +24,29 @@ $worker->onWorkerStart = function($worker) use($config) {
$time_interval = 3; $time_interval = 3;
Timer::add($time_interval, function()use($worker,$dm){ Timer::add($time_interval, function()use($worker,$dm){
foreach($worker->connections as $connection) { foreach($worker->connections as $connection) {
$data = [];
$passData = PassFlow::realTimeData($dm); $data = [
$returnData = ['data' => $passData]; 'code' => 1,
$data['realTimeData'] = $returnData; 'msg' => 'success'
$toDayGroupsEnterNum = PassFlow::toDayGroupsEnterNum($dm); ];
$data['toDayGroupsEnterNum'] = $toDayGroupsEnterNum;
# 客流趋势 与 占比
$allGroupTimeNumDay = PassFlow::allGroupTimeNum(['groupsId' => '','granularity' => 'daily'],$dm);
$allGroupTimeNumMonth = PassFlow::allGroupTimeNum(['groupsId' => '','granularity' => 'monthly'],$dm);
$allGroupTimeNumYear = PassFlow::allGroupTimeNum(['groupsId' => '','granularity' => 'yearly'],$dm);
$data['allGroupTimeNumDay'] = ['data' => $allGroupTimeNumDay];
$data['allGroupTimeNumMonth'] = ['data' => $allGroupTimeNumMonth];
$data['allGroupTimeNumYear'] = ['data' => $allGroupTimeNumYear];
# 今日各场馆
$data['toDayGroupsEnterNum'] = ['data' => PassFlow::toDayGroupsEnterNum($dm)];
# 中间总数据
$data['allGroupNum'] = ['data' => PassFlow::allGroupNum($dm)];
# 各场馆实时
$data['realTimeData'] = ['data' => PassFlow::realTimeData($dm)];
$connection->send(json_encode($data)); $connection->send(json_encode($data));
} }
}); });

54
web/ws_task_real_ty.php

@ -0,0 +1,54 @@
<?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();

46
web/ws_task_real_wh.php

@ -0,0 +1,46 @@
<?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:1236');
$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 = [];
# 主动推送对应页面数据
# 累计服务人数 - 24小时服务人次
$data['allFlowTrends'] = ['data' => PassFlow::allFlowTrends($dm)];
# 24小时总服务人次趋势
$data['getLibraryHours24List'] = ['data' => PassFlow::getLibraryHours24List($dm)];
# 各场馆服务人次趋势
$data['getLibraryGroupHoursList'] = ['data' => PassFlow::getLibraryGroupHoursList($dm)];
# 图书馆数据统计
$data['getLibraryLeaseData'] = ['data' => PassFlow::getLibraryLeaseData($dm)];
$connection->send(json_encode($data));
}
});
};
Worker::runAll();
Loading…
Cancel
Save