WebsiteMoniterController.class.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. <?php
  2. namespace bibidd\Controller;
  3. use Bibidd\Controller\CommonBaseController;
  4. class WebsiteMoniterController extends CommonBaseController
  5. {
  6. /**
  7. * 炸了么网站测速
  8. * @return void
  9. */
  10. public function zhaleme_speed_test()
  11. {
  12. $this->addHeaders(); //添加头部请求
  13. $curl = curl_init();
  14. $website = 'wz1235.lqg5q275b6x5pu0r6lb5zwm5.app:443';
  15. $call_back = 'https://www.5qe6lh5zwm5zci6k6h5s5pct5.app/bibidd/WebsiteMoniter/zhaleme_speed_call_back';
  16. $url = 'http://47.120.6.247:8081/api/zhaleme/getWebsiteSpeed';
  17. curl_setopt($curl, CURLOPT_URL, $url);
  18. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  19. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  20. $post_data['type']=2;
  21. $post_data['url']='https://zhale.me/http/?{"Target":"'.$website.'","Options":{"ISPs":["移动","电信","联通"],"Method":"GET","ParseMode":"default","SkipSSLVerify":false,"FollowRedirect":true},"IsContinue":false}';
  22. $post_data['url1']=$website;
  23. $post_data['att']=1;
  24. $post_data['calBackUrl']=$call_back;
  25. $post_data = json_encode($post_data);
  26. curl_setopt($curl, CURLOPT_POST, 1);
  27. curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
  28. curl_setopt($curl, CURLOPT_HEADER, 0);
  29. curl_setopt($curl, CURLOPT_HTTPHEADER,array(
  30. 'Content-Type: application/json; charset=utf-8',
  31. 'Content-Length:' . strlen($post_data),
  32. 'Cache-Control: no-cache',
  33. 'Pragma: no-cache'
  34. ));
  35. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  36. $res = curl_exec($curl);
  37. $errorno = curl_errno($curl);
  38. if ($errorno) {
  39. return $errorno;
  40. }
  41. curl_close($curl);
  42. $data['code'] = '200';
  43. $data['message'] = 'ok';
  44. $data['data'] =$res;
  45. echo json_encode($data);
  46. }
  47. /**
  48. * itdog 网络测速
  49. * @return int|void
  50. */
  51. public function itdog_speed_test()
  52. {
  53. $this->addHeaders(); //添加头部请求
  54. $curl = curl_init();
  55. $website = 'wz1235.lqg5q275b6x5pu0r6lb5zwm5.app:443';
  56. $call_back = 'https://www.5qe6lh5zwm5zci6k6h5s5pct5.app/bibidd/WebsiteMoniter/zhaleme_speed_call_back';
  57. $url = 'http://47.120.6.247:8081/api/itdog/getWebsiteSpeed';
  58. curl_setopt($curl, CURLOPT_URL, $url);
  59. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  60. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  61. $post_data['type']=2;
  62. $post_data['url']='https://www.itdog.cn/http/';
  63. $post_data['url1']=$website;
  64. $post_data['calBackUrl']=$call_back;
  65. $post_data['att']=1;
  66. $post_data = json_encode($post_data);
  67. curl_setopt($curl, CURLOPT_POST, 1);
  68. curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
  69. curl_setopt($curl, CURLOPT_HEADER, 0);
  70. curl_setopt($curl, CURLOPT_HTTPHEADER,array(
  71. 'Content-Type: application/json; charset=utf-8',
  72. 'Content-Length:' . strlen($post_data),
  73. 'Cache-Control: no-cache',
  74. 'Pragma: no-cache'
  75. ));
  76. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  77. $res = curl_exec($curl);
  78. $errorno = curl_errno($curl);
  79. if ($errorno) {
  80. return $errorno;
  81. }
  82. curl_close($curl);
  83. $data['code'] = '200';
  84. $data['message'] = 'ok';
  85. $data['data'] =$res;
  86. echo json_encode($data);
  87. }
  88. /**
  89. * 炸了么回调地址
  90. * @return void
  91. */
  92. public function zhaleme_speed_call_back()
  93. {
  94. $this->addHeaders(); //添加头部请求
  95. // 读取原始请求体
  96. $json = file_get_contents('php://input');
  97. $result = json_decode($json, true);
  98. $task_id = $result['taskId'];
  99. $website = $result['website'];
  100. $att= empty($result['att'])?"0":$result['att'];//透传信息,1则表示不存库
  101. $tool_src = empty($result['toolSrc'])?"炸了么":$result['toolSrc'];
  102. $send_tg = "目标网站:".$website."\n\n\n";//发送飞机文本
  103. $send_tg .=$tool_src."(待优化IP),任务号[".$task_id."]"."无法访问结果:\n\n";
  104. $timeOut_list = $result['timeOutList'];
  105. $slow_gt1s = $result['slowGt1s'];
  106. //保存结果
  107. $task_type['task_id'] = $task_id;
  108. $task_type['src'] = $tool_src;
  109. $task_type['website'] = $website;
  110. $task_type['unreachable_num'] = count($timeOut_list);
  111. $task_type['slow_num'] = count($slow_gt1s);
  112. $task_type['task_type'] = '网站测速';
  113. $task_type['creater_at'] = date('Y-m-d H:i:s');
  114. if($att=="1")
  115. {
  116. $type_id = M("web_monitor_task_type")->add($task_type);
  117. }
  118. //保存无法访问结果
  119. foreach ($timeOut_list as $key=>$value)
  120. {
  121. $time_out_info['type_id']=$type_id;
  122. $time_out_info['yun_ying_shang']=$value['yunYingShang'];
  123. $time_out_info['area_']=$value['area'];
  124. $time_out_info['address']=$value['address'];
  125. $time_out_info['resp_ip']=$value['respIP'];
  126. $time_out_info['resp_ip_ddress']=$value['respIpAddress'];
  127. $time_out_info['http_status']=$value['httpStatus'];
  128. $time_out_info['hao_shi']=$value['yaoShi'];
  129. $time_out_info['redirct_num']=$value['redirctNum'];
  130. $time_out_info['jiexi']=$value['jiexi'];
  131. $time_out_info['connectHaoshi']=$value['connect_hao_shi'];
  132. $time_out_info['ssl_wo_shou']=$value['sslWoshou'];
  133. $time_out_info['down_hao_shi']=$value['downHaoshi'];
  134. $time_out_info['down_size']=$value['downSize'];
  135. $time_out_info['down_speed']=$value['downSpeed'];
  136. $time_out_info['detail']=$value['detail'];
  137. $time_out_info['creater_at']=date('Y-m-d H:i:s');
  138. if($att=="1")
  139. {
  140. M("web_monitor_unreachable_result")->add($time_out_info);
  141. }
  142. $trimmedString = strstr($value['respIpAddress'], '/', true) ?: $value['respIpAddress'];
  143. $send_tg .= $value['address'].",".$value['yunYingShang'].",".$value['respIP'].','.$trimmedString.',❌❌'."\n\n";
  144. }
  145. if(count($slow_gt1s)>0)
  146. {
  147. $send_tg .="响应大于1秒结果:\n\n";
  148. }
  149. foreach ($slow_gt1s as $key=>$value)
  150. {
  151. $slow_info['type_id']=$type_id;
  152. $slow_info['yun_ying_shang']=$value['yunYingShang'];
  153. $slow_info['area_']=$value['area'];
  154. $slow_info['address']=$value['address'];
  155. $slow_info['resp_ip']=$value['respIP'];
  156. $slow_info['resp_ip_ddress']=$value['respIpAddress'];
  157. $slow_info['http_status']=$value['httpStatus'];
  158. $slow_info['hao_shi']=$value['yaoShi'];
  159. $slow_info['redirct_num']=$value['redirctNum'];
  160. $slow_info['jiexi']=$value['jiexi'];
  161. $slow_info['connectHaoshi']=$value['connect_hao_shi'];
  162. $slow_info['ssl_wo_shou']=$value['sslWoshou'];
  163. $slow_info['down_hao_shi']=$value['downHaoshi'];
  164. $slow_info['down_size']=$value['downSize'];
  165. $slow_info['down_speed']=$value['downSpeed'];
  166. $slow_info['detail']=$value['detail'];
  167. $slow_info['creater_at']=date('Y-m-d H:i:s');
  168. if($att=="1"){
  169. M("web_monitor_zslow_result")->add($slow_info);
  170. }
  171. $trimmedString = strstr($value['respIpAddress'], '/', true) ?: $value['respIpAddress'];
  172. $send_tg .= $value['address'].",".$value['yunYingShang'].",".$value['respIP'].','.$trimmedString.','.$value['yaoShi'].',✅❌'."\n\n";
  173. }
  174. $data['code'] = '200';
  175. $data['message'] = 'ok';
  176. $data['data'] = $task_id;
  177. echo json_encode($data);
  178. //发送小飞机
  179. $this->send_msg_to_telegram("6648772519:AAEVeukMrnHsKh_uduD5-JPrf7bU_7lMNcs","-4127616582",$send_tg);
  180. }
  181. /**
  182. * 网站测速度
  183. * @return int|void
  184. */
  185. private function send_website_speed($website,$att)
  186. {
  187. $this->addHeaders(); //添加头部请求
  188. $curl = curl_init();
  189. $call_back = 'https://www.5qe6lh5zwm5zci6k6h5s5pct5.app/bibidd/WebsiteMoniter/zhaleme_speed_call_back';
  190. $url = 'http://47.120.6.247:8081/api/comprehensive/getWebsiteSpeed';
  191. curl_setopt($curl, CURLOPT_URL, $url);
  192. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  193. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  194. $post_data['type']=2;
  195. $post_data['url']=$website;
  196. $post_data['url1']=$website;
  197. $post_data['att']=$att;
  198. $post_data['calBackUrl']=$call_back;
  199. $post_data = json_encode($post_data);
  200. curl_setopt($curl, CURLOPT_POST, 1);
  201. curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
  202. curl_setopt($curl, CURLOPT_HEADER, 0);
  203. curl_setopt($curl, CURLOPT_HTTPHEADER,array(
  204. 'Content-Type: application/json; charset=utf-8',
  205. 'Content-Length:' . strlen($post_data),
  206. 'Cache-Control: no-cache',
  207. 'Pragma: no-cache'
  208. ));
  209. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  210. $res = curl_exec($curl);
  211. $errorno = curl_errno($curl);
  212. if ($errorno) {
  213. return $errorno;
  214. }
  215. curl_close($curl);
  216. }
  217. /**
  218. * 网站测速
  219. * @return void
  220. */
  221. public function websit_speed()
  222. {
  223. $this->addHeaders(); //添加头部请求
  224. $website_list = M("web_monitor_zwebsiter")->order("id desc")->select();
  225. foreach ($website_list as $key=>$value)
  226. {
  227. $url = $value['website'];
  228. $is_store = $value['is_store'];
  229. $this->send_website_speed($url,$is_store);
  230. }
  231. $data['code'] = '200';
  232. $data['message'] = 'ok';
  233. $data['data'] = "ok";
  234. echo json_encode($data);
  235. }
  236. /**
  237. * 清理大于3小时的结果数据
  238. * @return void
  239. */
  240. public function clearGt3h()
  241. {
  242. $this->addHeaders(); //添加头部请求
  243. // 当前时间减去3小时
  244. $hours_ago = date('Y-m-d H:i:s', strtotime('-3 hours'));
  245. $task_type_list = M("web_monitor_task_type")->where("creater_at<'$hours_ago'")->field("id")->select();
  246. foreach ($task_type_list as $key=>$value)
  247. {
  248. $id = $value['id'];
  249. M("web_monitor_unreachable_result")->where("type_id='$id'")->delete();
  250. M("web_monitor_zslow_result")->where("type_id='$id'")->delete();
  251. M("web_monitor_task_type")->where("id='$id'")->delete();
  252. }
  253. $data['code'] = '200';
  254. $data['message'] = 'ok';
  255. $data['data'] = "ok";
  256. echo json_encode($data);
  257. }
  258. }