count = 1; //进程启动 $consumer->onWorkerStart = function($consumer) { App::initCommon(); $st="test/test"; $length = strlen($st); //创建tcp套接字 global $socket; $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); //连接tcp socket_connect($socket, '119.23.47.137',8083); //向打开的套集字写入数据(发送数据) $s = socket_write($socket, $st, $length); //从套接字中获取服务器发送来的数据 /*while(true){ $msg = socket_read($socket,8190); echo $msg; sleep(1); }*/ $time_interval = 1; \Workerman\Lib\Timer::add($time_interval, function () { try { global $socket; $msg = socket_read($socket,8190); //echo $msg; //[{"type":"LOGIN","status":"success"}] //[{"type":"DATA","wbMac":"C9DBBBFCEE26","rssi":-59,"gtMac":"D1127A899D6A","hr":93,"tp":"36.0","step":0,"cal":0}] $msg = json_decode($msg,true); if(!empty($msg)){ foreach($msg as $key => $val){ if($val['type'] == 'DATA'){ $data = [ 'createtime' => time(), 'type' => 'DATA', 'wbmac'=> isset($val['wbMac']) ? $val['wbMac'] : '', 'rssi' => isset($val['rssi']) ? $val['rssi'] : '', 'gtmac'=> isset($val['gtMac']) ? $val['gtMac'] : '', 'hr' => isset($val['hr']) ? $val['hr'] : '', 'tp' => isset($val['tp']) ? $val['tp'] : '', 'step' => isset($val['step']) ? $val['step'] : '', 'cal' => isset($val['cal']) ? $val['cal'] : '', ]; $rs = Db::name('socket_watch')->insertGetId($data); //每个学生每一个小时只保留一条记录 $student = Db::name('student')->where('watchmac',strtolower($data['wbmac']))->find(); if($student){ $map = [ 'student_id' => $student['id'], 'typedata' => ['IN','1,4,5'], 'createtime' => ['gt',time()-3600], ]; $check = Db::name('student_life')->where($map)->find(); if(empty($check)){ $life = [ [ 'typedata' => 1, 'student_id' => $student['id'], 'info' => $data['tp'], 'createtime' => time(), 'classes_id' => $student['classes_id'], 'school_id' => $student['school_id'], ], [ 'typedata' => 4, 'student_id' => $student['id'], 'info' => $data['hr'], 'createtime' => time(), 'classes_id' => $student['classes_id'], 'school_id' => $student['school_id'], ], [ 'typedata' => 5, 'student_id' => $student['id'], 'info' => $data['step'], 'createtime' => time(), 'classes_id' => $student['classes_id'], 'school_id' => $student['school_id'], ], ]; Db::name('student_life')->insertAll($life); } } //每个学生每一个小时只保留一条记录 } } } } catch (\Exception $e) { echo $e->getMessage(); } }); }; //进程关闭 $consumer->onWorkerStop = function($consumer) { restore_error_handler(); };