init
This commit is contained in:
73
app/controller/Push.php
Normal file
73
app/controller/Push.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace app\controller;
|
||||
|
||||
use think\worker\Server;
|
||||
use Workerman\Lib\Timer;
|
||||
use think\facade\Db;
|
||||
class Push extends Server
|
||||
{
|
||||
protected $socket = 'http://0.0.0.0:2346'; //端口自行修改
|
||||
|
||||
protected static $heartbeat_time = 60*60*24;
|
||||
|
||||
public function onWorkerStart($worker)
|
||||
{
|
||||
Timer::add(3, function () use ($worker) {
|
||||
|
||||
$time_now = time();
|
||||
$map1 = [
|
||||
['status', '=',255],
|
||||
['is_pushed','=',1],
|
||||
];
|
||||
|
||||
$map2 = [
|
||||
['status','=', 0],
|
||||
['is_pushed','=',1],
|
||||
];
|
||||
$hasfault = Db::table('charge_pile')->whereOr([$map1, $map2])->order('charge_pile_id desc')->count('charge_pile_id');
|
||||
|
||||
if ($hasfault) {
|
||||
$case1 = [
|
||||
['charge_pile.status', '=',255],
|
||||
['is_pushed','=',1],
|
||||
];
|
||||
$case2 = [
|
||||
['charge_pile.status', '=',0],
|
||||
['is_pushed','=',1],
|
||||
];
|
||||
$faultInfo = Db::table('charge_pile,charge_station')
|
||||
->whereOr([$case1, $case2])
|
||||
->where('charge_pile.charge_station_id = charge_station.charge_station_id')
|
||||
->order('charge_pile_id desc')
|
||||
->field('charge_station.charge_station_id,charge_station_name,charge_pile.charge_pile_number,charge_station.area,charge_station.street,charge_pile.status,charge_pile.no')
|
||||
->find();
|
||||
$faultInfo['code'] = 1;
|
||||
foreach ($worker->connections as $connection) {
|
||||
if (empty($connection->lastMessageTime)) {
|
||||
$connection->lastMessageTime = $time_now;
|
||||
}
|
||||
|
||||
if ($time_now - $connection->lastMessageTime > self::$heartbeat_time) {
|
||||
$connection->close();
|
||||
}
|
||||
|
||||
$connection->send(json_encode($faultInfo));
|
||||
}
|
||||
Db::table('charge_pile')->where('charge_pile_number',$faultInfo['charge_pile_number'])->save(['is_pushed'=>2]);
|
||||
} else {
|
||||
foreach ($worker->connections as $connection) {
|
||||
if (empty($connection->lastMessageTime)) {
|
||||
$connection->lastMessageTime = $time_now;
|
||||
continue;
|
||||
}
|
||||
if ($time_now - $connection->lastMessageTime > self::$heartbeat_time) { //连接超时
|
||||
$connection->close();
|
||||
}
|
||||
$connection->send(json_encode(['code'=>0,'msg'=>'暂时没有信息']));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user