Payment.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. use Workerman\Worker;
  3. use think\App;
  4. use think\Db;
  5. // ######## 消息队列消费者 ########
  6. $consumer = new Worker();
  7. // 慢任务,消费者的进程数可以开多一些
  8. $consumer->count = 1;
  9. //进程启动
  10. $consumer->onWorkerStart = function($consumer)
  11. {
  12. App::initCommon();
  13. $st="test/test";
  14. $length = strlen($st);
  15. //创建tcp套接字
  16. global $socket;
  17. $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
  18. //连接tcp
  19. socket_connect($socket, '119.23.47.137',8083);
  20. //向打开的套集字写入数据(发送数据)
  21. $s = socket_write($socket, $st, $length);
  22. //从套接字中获取服务器发送来的数据
  23. /*while(true){
  24. $msg = socket_read($socket,8190);
  25. echo $msg;
  26. sleep(1);
  27. }*/
  28. $time_interval = 1;
  29. \Workerman\Lib\Timer::add($time_interval, function () {
  30. try
  31. {
  32. global $socket;
  33. $msg = socket_read($socket,8190);
  34. //echo $msg;
  35. //[{"type":"LOGIN","status":"success"}]
  36. //[{"type":"DATA","wbMac":"C9DBBBFCEE26","rssi":-59,"gtMac":"D1127A899D6A","hr":93,"tp":"36.0","step":0,"cal":0}]
  37. $msg = json_decode($msg,true);
  38. if(!empty($msg)){
  39. foreach($msg as $key => $val){
  40. if($val['type'] == 'DATA'){
  41. $data = [
  42. 'createtime' => time(),
  43. 'type' => 'DATA',
  44. 'wbmac'=> isset($val['wbMac']) ? $val['wbMac'] : '',
  45. 'rssi' => isset($val['rssi']) ? $val['rssi'] : '',
  46. 'gtmac'=> isset($val['gtMac']) ? $val['gtMac'] : '',
  47. 'hr' => isset($val['hr']) ? $val['hr'] : '',
  48. 'tp' => isset($val['tp']) ? $val['tp'] : '',
  49. 'step' => isset($val['step']) ? $val['step'] : '',
  50. 'cal' => isset($val['cal']) ? $val['cal'] : '',
  51. ];
  52. $rs = Db::name('socket_watch')->insertGetId($data);
  53. //每个学生每一个小时只保留一条记录
  54. $student = Db::name('student')->where('watchmac',strtolower($data['wbmac']))->find();
  55. if($student){
  56. $map = [
  57. 'student_id' => $student['id'],
  58. 'typedata' => ['IN','1,4,5'],
  59. 'createtime' => ['gt',time()-3600],
  60. ];
  61. $check = Db::name('student_life')->where($map)->find();
  62. if(empty($check)){
  63. $life = [
  64. [
  65. 'typedata' => 1,
  66. 'student_id' => $student['id'],
  67. 'info' => $data['tp'],
  68. 'createtime' => time(),
  69. 'classes_id' => $student['classes_id'],
  70. 'school_id' => $student['school_id'],
  71. ],
  72. [
  73. 'typedata' => 4,
  74. 'student_id' => $student['id'],
  75. 'info' => $data['hr'],
  76. 'createtime' => time(),
  77. 'classes_id' => $student['classes_id'],
  78. 'school_id' => $student['school_id'],
  79. ],
  80. [
  81. 'typedata' => 5,
  82. 'student_id' => $student['id'],
  83. 'info' => $data['step'],
  84. 'createtime' => time(),
  85. 'classes_id' => $student['classes_id'],
  86. 'school_id' => $student['school_id'],
  87. ],
  88. ];
  89. Db::name('student_life')->insertAll($life);
  90. }
  91. }
  92. //每个学生每一个小时只保留一条记录
  93. }
  94. }
  95. }
  96. }
  97. catch (\Exception $e)
  98. {
  99. echo $e->getMessage();
  100. }
  101. });
  102. };
  103. //进程关闭
  104. $consumer->onWorkerStop = function($consumer)
  105. {
  106. restore_error_handler();
  107. };