123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- use Workerman\Worker;
- use think\App;
- use think\Db;
- // ######## 消息队列消费者 ########
- $consumer = new Worker();
- // 慢任务,消费者的进程数可以开多一些
- $consumer->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();
- };
|