VM暫存
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

323 строки
21KB

  1. <?php
  2. // 博辰設備對接
  3. // php //home/bigbang/apps/coworker/parktron2server.php
  4. require_once '/home/bigbang/libs/Workerman/Autoloader.php';
  5. use Workerman\Worker;
  6. Worker::$logFile = '/dev/null'; // 不記錄log file
  7. //Worker::$pidFile = '/tmp/run/'.basename(__FILE__).'.pid';
  8. // 傳送主機資料
  9. $ch = curl_init();
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  11. curl_setopt($ch, CURLOPT_POST, true); // 啟用POST
  12. // 建立一個Worker監聽8068埠,不使用任何應用層協定
  13. $tcp_worker = new Worker("tcp://0.0.0.0:8068");
  14. // 啟動N個進程對外提供服務
  15. $tcp_worker->count = 6;
  16. $tcp_worker->onConnect = function($connection)
  17. {
  18. echo "New Connection\n";
  19. };
  20. $tcp_worker->onClose = function($connection)
  21. {
  22. echo "Connection closed\n";
  23. };
  24. // 當用戶端發來數據(主程式)
  25. $tcp_worker->onMessage = function($connection, $tcp_in)
  26. {
  27. global $ch, $last_lpr;
  28. // echo 'start time:'.date('Y-m-d H:i:s');
  29. list(, $seq, $cmd, $data) = explode(chr(28), $tcp_in); // 0x1C tcp欄位分隔
  30. // echo "data_in:[{$seq}|{$cmd}|{$data}|]\n";
  31. switch($cmd)
  32. {
  33. case '001': // 車輛入場
  34. list($devno, $token, $lpr, $in_time, $last_field) = explode(chr(31), $data); // 0x1F data欄位分隔
  35. $type = substr($last_field, 0, -2);
  36. echo "{$devno}|{$token}|{$lpr}|{$in_time}|{$type}|\n";
  37. $connection->send('OK');
  38. break;
  39. case '002': // APS詢問車牌入場時間
  40. list($token, $lpr, $last_field) = explode(chr(31), $data); // 0x1F data欄位分隔
  41. $lpr = str_replace('%', '', $lpr);
  42. $last_lpr = $lpr;
  43. $in_time = substr($last_field, 0, -2);
  44. // echo "cmd_002:[{$token}|{$lpr}|{$in_time}|]/n";
  45. $data = array('lpr' => $lpr);
  46. curl_setopt($ch, CURLOPT_URL, 'http://localhost/carpayment.html/query_in_fuzzy/');
  47. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  48. $jdata = curl_exec($ch);
  49. $results = json_decode($jdata, true);
  50. $connection->send(tcp_data_fuzzy($results['count'], $results['results'], '001', '002'));
  51. break;
  52. case '003': // 繳費完成
  53. list($ticket_no, $lpr, $in_time, $pay_time, $last_field) = explode(chr(31), $data); // 0x1F data欄位分隔
  54. $pay_type = substr($last_field, 0, -2);
  55. // echo "{$ticket_no}|{$lpr}|{$in_time}|{$pay_time}|{$pay_type}|/n";
  56. $connection->send('OK');
  57. //if ($lpr == '*******') {$lpr = $last_lpr; $err_lpr = '***';}
  58. if ($lpr == '*******') {$err_lpr = '***';}
  59. else
  60. { $err_lpr = '+++';}
  61. // 傳送繳費資料
  62. $data = array
  63. (
  64. 'ticket_no' => $ticket_no, // 票卡號碼
  65. 'lpr' => $lpr, // 車號
  66. 'in_time' => $in_time, // 入場時間
  67. 'pay_time' => $pay_time, // 繳款時間
  68. 'pay_type' => $pay_type // 繳款方式(0:現金, 1:月票, 2:多卡通)
  69. );
  70. curl_setopt($ch, CURLOPT_URL, 'http://localhost/carpayment.html/p2payed/');
  71. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  72. $results = curl_exec($ch);
  73. file_put_contents('/tmp/aps.log.txt', date('Y-m-d H:i:s').":{$err_lpr}\n".print_r($data, true)."\n\n", FILE_APPEND);
  74. break;
  75. }
  76. // echo 'end_time:'.date('Y-m-d H:i:s');
  77. };
  78. function tcp_data_fuzzy($records_count, $records, $seq, $cmdid)
  79. {
  80. $seq = '00001';
  81. $cmdid = '002';
  82. $packformat = 'aC';
  83. // 0 筆
  84. if($records_count == 0)
  85. {
  86. $count = 0;
  87. $data = pack($packformat,
  88. "{$count}", 0x1f
  89. );
  90. $data_len = strlen($data);
  91. $socket_len = $data_len + 16;
  92. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  93. 0x02,
  94. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  95. "{$count}", 0x1f,
  96. 0x80, 0x03);
  97. return $send_data;
  98. }
  99. // 1. create data
  100. foreach ($records as $idx => $rows)
  101. {
  102. $pathlen = strlen($rows['in_pic_name']);
  103. $packformat = $packformat."A7Ca7CaCa19Ca{$pathlen}Ca19Ca10Ca10Ca5Ca5C";
  104. }
  105. if(count($records) == 1)
  106. {
  107. $count = 1;
  108. $data = pack($packformat,
  109. "{$count}", 0x1f,
  110. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f
  111. );
  112. $data_len = strlen($data);
  113. $socket_len = $data_len + 16;
  114. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  115. 0x02,
  116. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  117. "{$count}", 0x1f,
  118. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  119. 0x80, 0x03);
  120. }
  121. else if(count($records) == 2)
  122. {
  123. $count = 2;
  124. $data = pack($packformat,
  125. "{$count}", 0x1f,
  126. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  127. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f
  128. );
  129. $data_len = strlen($data);
  130. $socket_len = $data_len + 16;
  131. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  132. 0x02,
  133. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  134. "{$count}", 0x1f,
  135. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  136. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  137. 0x80, 0x03);
  138. }
  139. else if(count($records) == 3)
  140. {
  141. $count = 3;
  142. $data = pack($packformat,
  143. "{$count}", 0x1f,
  144. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  145. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  146. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f
  147. );
  148. $data_len = strlen($data);
  149. $socket_len = $data_len + 16;
  150. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  151. 0x02,
  152. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  153. "{$count}", 0x1f,
  154. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  155. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  156. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  157. 0x80, 0x03);
  158. }
  159. else if(count($records) == 4)
  160. {
  161. $count = 4;
  162. $data = pack($packformat,
  163. "{$count}", 0x1f,
  164. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  165. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  166. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  167. $records[3]['lpr'], 0x1f, $records[3]['seat_no'], 0x1f, $records[3]['ticket'], 0x1f, $records[3]['in_time'], 0x1f, $records[3]['in_pic_name'], 0x1f, $records[3]['pay_time'], 0x1f, $records[3]['start_date'], 0x1f, $records[3]['end_date'], 0x1f, $records[3]['start_time'], 0x1f, $records[3]['end_time'], 0x1f
  168. );
  169. $data_len = strlen($data);
  170. $socket_len = $data_len + 16;
  171. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  172. 0x02,
  173. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  174. "{$count}", 0x1f,
  175. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  176. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  177. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  178. $records[3]['lpr'], 0x1f, $records[3]['seat_no'], 0x1f, $records[3]['ticket'], 0x1f, $records[3]['in_time'], 0x1f, $records[3]['in_pic_name'], 0x1f, $records[3]['pay_time'], 0x1f, $records[3]['start_date'], 0x1f, $records[3]['end_date'], 0x1f, $records[3]['start_time'], 0x1f, $records[3]['end_time'], 0x1f,
  179. 0x80, 0x03);
  180. }
  181. else if(count($records) == 5)
  182. {
  183. $count = 5;
  184. $data = pack($packformat,
  185. "{$count}", 0x1f,
  186. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  187. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  188. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  189. $records[3]['lpr'], 0x1f, $records[3]['seat_no'], 0x1f, $records[3]['ticket'], 0x1f, $records[3]['in_time'], 0x1f, $records[3]['in_pic_name'], 0x1f, $records[3]['pay_time'], 0x1f, $records[3]['start_date'], 0x1f, $records[3]['end_date'], 0x1f, $records[3]['start_time'], 0x1f, $records[3]['end_time'], 0x1f,
  190. $records[4]['lpr'], 0x1f, $records[4]['seat_no'], 0x1f, $records[4]['ticket'], 0x1f, $records[4]['in_time'], 0x1f, $records[4]['in_pic_name'], 0x1f, $records[4]['pay_time'], 0x1f, $records[4]['start_date'], 0x1f, $records[4]['end_date'], 0x1f, $records[4]['start_time'], 0x1f, $records[4]['end_time'], 0x1f
  191. );
  192. $data_len = strlen($data);
  193. $socket_len = $data_len + 16;
  194. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  195. 0x02,
  196. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  197. "{$count}", 0x1f,
  198. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  199. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  200. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  201. $records[3]['lpr'], 0x1f, $records[3]['seat_no'], 0x1f, $records[3]['ticket'], 0x1f, $records[3]['in_time'], 0x1f, $records[3]['in_pic_name'], 0x1f, $records[3]['pay_time'], 0x1f, $records[3]['start_date'], 0x1f, $records[3]['end_date'], 0x1f, $records[3]['start_time'], 0x1f, $records[3]['end_time'], 0x1f,
  202. $records[4]['lpr'], 0x1f, $records[4]['seat_no'], 0x1f, $records[4]['ticket'], 0x1f, $records[4]['in_time'], 0x1f, $records[4]['in_pic_name'], 0x1f, $records[4]['pay_time'], 0x1f, $records[4]['start_date'], 0x1f, $records[4]['end_date'], 0x1f, $records[4]['start_time'], 0x1f, $records[4]['end_time'], 0x1f,
  203. 0x80, 0x03);
  204. }
  205. else if(count($records) == 6)
  206. {
  207. $count = 6;
  208. $data = pack($packformat,
  209. "{$count}", 0x1f,
  210. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  211. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  212. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  213. $records[3]['lpr'], 0x1f, $records[3]['seat_no'], 0x1f, $records[3]['ticket'], 0x1f, $records[3]['in_time'], 0x1f, $records[3]['in_pic_name'], 0x1f, $records[3]['pay_time'], 0x1f, $records[3]['start_date'], 0x1f, $records[3]['end_date'], 0x1f, $records[3]['start_time'], 0x1f, $records[3]['end_time'], 0x1f,
  214. $records[4]['lpr'], 0x1f, $records[4]['seat_no'], 0x1f, $records[4]['ticket'], 0x1f, $records[4]['in_time'], 0x1f, $records[4]['in_pic_name'], 0x1f, $records[4]['pay_time'], 0x1f, $records[4]['start_date'], 0x1f, $records[4]['end_date'], 0x1f, $records[4]['start_time'], 0x1f, $records[4]['end_time'], 0x1f,
  215. $records[5]['lpr'], 0x1f, $records[5]['seat_no'], 0x1f, $records[5]['ticket'], 0x1f, $records[5]['in_time'], 0x1f, $records[5]['in_pic_name'], 0x1f, $records[5]['pay_time'], 0x1f, $records[5]['start_date'], 0x1f, $records[5]['end_date'], 0x1f, $records[5]['start_time'], 0x1f, $records[5]['end_time'], 0x1f
  216. );
  217. $data_len = strlen($data);
  218. $socket_len = $data_len + 16;
  219. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  220. 0x02,
  221. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  222. "{$count}", 0x1f,
  223. $records[0]['lpr'], 0x1f, $records[0]['seat_no'], 0x1f, $records[0]['ticket'], 0x1f, $records[0]['in_time'], 0x1f, $records[0]['in_pic_name'], 0x1f, $records[0]['pay_time'], 0x1f, $records[0]['start_date'], 0x1f, $records[0]['end_date'], 0x1f, $records[0]['start_time'], 0x1f, $records[0]['end_time'], 0x1f,
  224. $records[1]['lpr'], 0x1f, $records[1]['seat_no'], 0x1f, $records[1]['ticket'], 0x1f, $records[1]['in_time'], 0x1f, $records[1]['in_pic_name'], 0x1f, $records[1]['pay_time'], 0x1f, $records[1]['start_date'], 0x1f, $records[1]['end_date'], 0x1f, $records[1]['start_time'], 0x1f, $records[1]['end_time'], 0x1f,
  225. $records[2]['lpr'], 0x1f, $records[2]['seat_no'], 0x1f, $records[2]['ticket'], 0x1f, $records[2]['in_time'], 0x1f, $records[2]['in_pic_name'], 0x1f, $records[2]['pay_time'], 0x1f, $records[2]['start_date'], 0x1f, $records[2]['end_date'], 0x1f, $records[2]['start_time'], 0x1f, $records[2]['end_time'], 0x1f,
  226. $records[3]['lpr'], 0x1f, $records[3]['seat_no'], 0x1f, $records[3]['ticket'], 0x1f, $records[3]['in_time'], 0x1f, $records[3]['in_pic_name'], 0x1f, $records[3]['pay_time'], 0x1f, $records[3]['start_date'], 0x1f, $records[3]['end_date'], 0x1f, $records[3]['start_time'], 0x1f, $records[3]['end_time'], 0x1f,
  227. $records[4]['lpr'], 0x1f, $records[4]['seat_no'], 0x1f, $records[4]['ticket'], 0x1f, $records[4]['in_time'], 0x1f, $records[4]['in_pic_name'], 0x1f, $records[4]['pay_time'], 0x1f, $records[4]['start_date'], 0x1f, $records[4]['end_date'], 0x1f, $records[4]['start_time'], 0x1f, $records[4]['end_time'], 0x1f,
  228. $records[5]['lpr'], 0x1f, $records[5]['seat_no'], 0x1f, $records[5]['ticket'], 0x1f, $records[5]['in_time'], 0x1f, $records[5]['in_pic_name'], 0x1f, $records[5]['pay_time'], 0x1f, $records[5]['start_date'], 0x1f, $records[5]['end_date'], 0x1f, $records[5]['start_time'], 0x1f, $records[5]['end_time'], 0x1f,
  229. 0x80, 0x03);
  230. }
  231. return $send_data;
  232. }
  233. function tcp_data($arr, $seq, $cmdid)
  234. {
  235. $crc = pack('C', 'X'); // 起始值
  236. $seq = '00001';
  237. $cmdid = '002';
  238. $pathlen = strlen($arr['pic_name']);
  239. $packformat = "aCA7Ca7CaCa19Ca{$pathlen}Ca19Ca10Ca10Ca5Ca5C";
  240. // $packformat = "aCA7Ca7CaCa19Ca71Ca19Ca10Ca10Ca5Ca5C";
  241. $data = pack($packformat,
  242. $arr['nth'], 0x1f,
  243. $arr['lpr'], 0x1f,
  244. $arr['seat_no'], 0x1f,
  245. $arr['ticket'], 0x1f,
  246. $arr['start_time'], 0x1f,
  247. $arr['pic_name'], 0x1f,
  248. $arr['pay_time'], 0x1f,
  249. $arr['ticket_start_date'], 0x1f,
  250. $arr['ticket_end_date'], 0x1f,
  251. $arr['ticket_start_time'], 0x1f,
  252. $arr['ticket_end_time'], 0x1f);
  253. $data_len = strlen($data);
  254. $socket_len = $data_len + 16;
  255. // echo "len data[{$data_len}] socket[{$socket_len}] data[{$data}]";
  256. $send_data = pack("CCCCa5Ca3C{$packformat}CC",
  257. 0x02,
  258. $socket_len / 0x0100, $socket_len % 0x0100, 0x1c, $seq, 0x1c, $cmdid, 0x1c,
  259. $arr['nth'], 0x1f,
  260. $arr['lpr'], 0x1f,
  261. $arr['seat_no'], 0x1f,
  262. $arr['ticket'], 0x1f,
  263. $arr['start_time'], 0x1f,
  264. $arr['pic_name'], 0x1f,
  265. $arr['pay_time'], 0x1f,
  266. $arr['ticket_start_date'], 0x1f,
  267. $arr['ticket_end_date'], 0x1f,
  268. $arr['ticket_start_time'], 0x1f,
  269. $arr['ticket_end_time'], 0x1f,
  270. 0x80, 0x03);
  271. // echo 'len:[' . $socket_len. '] send_data:['. $send_data .']';
  272. // file_put_contents('/tmp/aps.log.txt', date('Y-m-d H:i:s')."\n".$send_data ."\n\n", FILE_APPEND);
  273. return $send_data;
  274. }
  275. // 執行worker
  276. Worker::runAll();