VM暫存
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

Parkingquery.php 6.8KB

hace 8 años
hace 8 años
hace 8 años
hace 8 años
hace 8 años
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /*
  3. file: carpark.php 停車管理
  4. */
  5. if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  6. // require_once(MQ_CLASS_FILE);
  7. class Parkingquery extends CI_Controller
  8. {
  9. var $vars = array(); // 共用變數
  10. function __construct()
  11. {
  12. parent::__construct();
  13. // ----- 程式開發階段log設定 -----
  14. if (@ENVIRONMENT == 'development')
  15. {
  16. ini_set('display_errors', '1');
  17. //error_reporting(E_ALL ^ E_NOTICE);
  18. error_reporting(E_ALL);
  19. }
  20. set_error_handler(array($this, 'error_handler'), E_ALL); // 資料庫異動需做log
  21. /*
  22. // 共用記憶體
  23. $this->vars['mcache'] = new Memcache;
  24. $this->vars['mcache']->connect(MEMCACHE_HOST, MEMCACHE_PORT) or die ('Could not connect memcache');
  25. // mqtt subscribe
  26. $this->vars['mqtt'] = new phpMQTT(MQ_HOST, MQ_PORT, uniqid());
  27. if(!$this->vars['mqtt']->connect()){ die ('Could not connect mqtt'); }
  28. */
  29. // ----- 定義常數(路徑, cache秒數) -----
  30. define('APP_VERSION', '100'); // 版本號
  31. define('MAX_AGE', 604800); // cache秒數, 此定義1個月
  32. define('APP_NAME', 'parkingquery'); // 應用系統名稱
  33. define('PAGE_PATH', APP_BASE.'ci_application/views/'.APP_NAME.'/'); // path of views
  34. define('SERVER_URL', 'http://'.(isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost').'/'); // URL
  35. define('APP_URL', SERVER_URL.APP_NAME.'.html/'); // controller路徑
  36. define('WEB_URL', SERVER_URL.APP_NAME.'/'); // 網頁路徑
  37. define('WEB_LIB', SERVER_URL.'libs/'); // 網頁lib
  38. define('BOOTSTRAPS', WEB_LIB.'bootstrap_sb/'); // bootstrap lib
  39. define('LOG_PATH', FILE_BASE.APP_NAME.'/logs/'); // log path
  40. $this->load->model('parkingquery_model');
  41. $this->load->model('security_model'); // 鎖車
  42. // $this->parkingquery_model->init($this->vars);
  43. }
  44. // 發生錯誤時集中在此處理
  45. public function error_handler($errno, $errstr, $errfile, $errline, $errcontext)
  46. {
  47. $str = date('H:i:s')."|{$errstr}|{$errfile}|{$errline}|{$errno}\n";
  48. //error_log($str, 3, $log_file . '.' . date('Ymd').'.log.txt'); // 3代表參考後面的檔名
  49. error_log($str, 3, LOG_PATH.APP_NAME . '.' . date('Ymd').'.log.txt'); // 3代表參考後面的檔名
  50. }
  51. // 顯示靜態網頁(html檔)
  52. protected function show_page($page_name, &$data = null)
  53. {
  54. $page_file = PAGE_PATH.$page_name.'.php';
  55. $last_modified_time = filemtime($page_file);
  56. // 若檔案修改時間沒有異動, 或版本無異動, 通知瀏覽器使用cache, 不再下傳網頁
  57. header('Cache-Control:max-age='.MAX_AGE); // cache 1個月
  58. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_modified_time).' GMT');
  59. header('Etag: '. APP_VERSION);
  60. header('Cache-Control: public');
  61. if (!empty($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == APP_VERSION && @strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time)
  62. {
  63. header('HTTP/1.1 304 Not Modified');
  64. }
  65. else
  66. {
  67. $this->load->view(APP_NAME.'/'.$page_name, $data);
  68. }
  69. }
  70. // response http
  71. protected function http_return($return_code, $type)
  72. {
  73. if ($type == 'text') echo $return_code;
  74. else echo json_encode($return_code, JSON_UNESCAPED_UNICODE);
  75. }
  76. // 查詢各樓層剩餘車位
  77. public function check_space()
  78. {
  79. $seqno = $this->uri->segment(3);
  80. $data = $this->parkingquery_model->check_space($seqno);
  81. $data['result']['num'] = $seqno;
  82. $data['result_code'] = 'OK';
  83. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  84. }
  85. // 查詢各樓層剩餘車位 (身障)
  86. public function check_space2()
  87. {
  88. $seqno = $this->uri->segment(3);
  89. $data = $this->parkingquery_model->check_space($seqno, 2);
  90. $data['result']['num'] = $seqno;
  91. $data['result_code'] = 'OK';
  92. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  93. }
  94. // 停車位置查詢(板橋好停車)
  95. // http://203.75.167.89/parkingquery.html/check_location/ABC1234
  96. public function check_location()
  97. {
  98. $lpr = $this->uri->segment(3);
  99. $data = $this->parkingquery_model->check_location($lpr);
  100. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  101. }
  102. // 空車位導引
  103. // http://203.75.167.89/parkingquery.html/get_valid_seat
  104. public function get_valid_seat()
  105. {
  106. $pksno = $this->uri->segment(3, 0); // 從某一個車位開始, 若無則設0
  107. $data = $this->parkingquery_model->get_valid_seat($pksno);
  108. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  109. }
  110. // 空車位導引 (身障)
  111. // http://203.75.167.89/parkingquery.html/get_valid_seat2
  112. public function get_valid_seat2()
  113. {
  114. $pksno = $this->uri->segment(3, 0); // 從某一個車位開始, 若無則設0
  115. $data = $this->parkingquery_model->get_valid_seat($pksno, 2);
  116. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  117. }
  118. // 緊急求救
  119. // http://203.75.167.89/parkingquery.html/send_sos/B2/111/123
  120. public function send_sos()
  121. {
  122. $floor = $this->uri->segment(3);
  123. $x = $this->uri->segment(4);
  124. $y = $this->uri->segment(5);
  125. get_headers("http://localhost/sos/set_sos.php?floor={$floor}&x={$x}&y={$y}");
  126. $data = $this->parkingquery_model->send_sos($floor, $x, $y);
  127. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  128. }
  129. // 防盜鎖車
  130. // http://203.75.167.89/parkingquery.html/security_action/ABC1234/pswd/2
  131. public function security_action()
  132. {
  133. $lpr = $this->uri->segment(3);
  134. $pswd = $this->uri->segment(4);
  135. $action = $this->uri->segment(5);
  136. $data = $this->security_model->security_action($lpr, $pswd, $action);
  137. echo json_encode($data, JSON_UNESCAPED_UNICODE);
  138. }
  139. // 警急求救地圖
  140. public function floor_map()
  141. {
  142. $this->show_page("floor_map");
  143. }
  144. }