PageRenderTime 55ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/get_current_data.php

https://bitbucket.org/benelsen/flighttracker
PHP | 99 lines | 74 code | 17 blank | 8 comment | 13 complexity | a5ff61af9eb38852d830265c193a4858 MD5 | raw file
  1. <?php
  2. if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start();
  3. header('Cache-Control: no-cache, must-revalidate');
  4. header('Content-type: application/json');
  5. $file = './data/tmp/data.tmp';
  6. if (file_exists($file) && (filectime($file) > (time() - 7))) {
  7. echo file_get_contents($file);
  8. } else {
  9. $ch = curl_init();
  10. curl_setopt($ch, CURLOPT_URL, "http://www.quadrant-atc.net/data.js");
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  12. $data = curl_exec($ch);
  13. curl_close($ch);
  14. $lines = explode('-',$data);
  15. //print_r($lines);
  16. $data = null;
  17. foreach ( $lines as $line ) {
  18. $pattern = '@track\("(\w{3,9})\s*["]{1}[,]{1}([0-9\. ]{10})[,]{1}([0-9\. ]{11})[,]{1}(\d{1,3})[,]{1}(\d{1,4})[,]{1}(\d{1,3}).*@';
  19. preg_match_all($pattern, $line, $data_add);
  20. $pattern = '@deltrack\("(\w{3,9})\s*"\);@';
  21. preg_match_all($pattern, $line, $data_del);
  22. }
  23. for ( $i = 0; $i < count($data_add[0]); $i++) {
  24. if (is_array($data_add[1][$i])) {
  25. $entries[$data_add[1][$i]]['lat'] = ($entries[$data_add[1][$i]]['lat'] + trim($data_add[2][$i])) / 2;
  26. $entries[$data_add[1][$i]]['lon'] = ($entries[$data_add[1][$i]]['lon'] + trim($data_add[3][$i])) / 2;
  27. $entries[$data_add[1][$i]]['hdg'] = floor(($entries[$data_add[1][$i]]['hdg'] + $data_add[4][$i]) / 2);
  28. $entries[$data_add[1][$i]]['spd'] = floor(($entries[$data_add[1][$i]]['spd'] + $data_add[5][$i]*0.1944) / 2);
  29. $entries[$data_add[1][$i]]['alt'] = floor(($entries[$data_add[1][$i]]['alt'] + $data_add[6][$i]) / 2);
  30. } else {
  31. $entries[$data_add[1][$i]]['type'] = "add";
  32. $entries[$data_add[1][$i]]['lat'] = trim($data_add[2][$i]);
  33. $entries[$data_add[1][$i]]['lon'] = trim($data_add[3][$i]);
  34. $entries[$data_add[1][$i]]['hdg'] = $data_add[4][$i];
  35. $entries[$data_add[1][$i]]['spd'] = floor($data_add[5][$i]*0.1944); // *(0.36/1.852) dm/s => kts
  36. $entries[$data_add[1][$i]]['alt'] = $data_add[6][$i];
  37. }
  38. }
  39. for ( $i = 0; $i < count($data_del[0]); $i++) {
  40. //$entries[$data[1][$i]]['callsign'] = $data_add[1][$i];
  41. if (!is_array($data_del[1][$i])) {
  42. $entries[$data_del[1][$i]]['type'] = "delete";
  43. }
  44. }
  45. $ch = curl_init();
  46. curl_setopt($ch, CURLOPT_URL, "http://www.flightradar24.com/_xml/plane_data3.php");
  47. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  48. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
  49. $data = curl_exec($ch);
  50. curl_close($ch);
  51. $lines = explode("/n",$data);
  52. $data = null;
  53. foreach ( $lines as $line ) {
  54. //track("AFL315 ",47.7028620, 8.1190306,225,2053,380);
  55. //$pattern = '@track\("(\w{3,9})\s*["]{1}[,]{1}([0-9\. ]{10})[,]{1}([0-9\. ]{11})[,]{1}(\d{1,3})[,]{1}(\d{1,4})[,]{1}(\d{1,3}).*@';
  56. //<marker history=" newpoly 4BD063,LTBA,KYV009,31975,39.42118,30.0614,421,328,,,2010-04-18 20:47:38, " ></marker>
  57. $pattern = '@newpoly[ ]{1}[A-F0-9]{6}[,]{1}[A-Z0-9]{4,5}[,]{1}(\w{3,9})[,]{1}(\d{1,5})[,]{1}([0-9\. -]{2,10})[,]{1}([0-9\. -]{2,10})[,]{1}(\d{1,4})[,]{1}(\d{1,3})[,]{1}.*[>]{1}@';
  58. preg_match_all($pattern, $line, $data_add);
  59. }
  60. for ( $i = 0; $i < count($data_add[0]); $i++) {
  61. if (is_array($data_add[1][$i])) {
  62. $entries[$data_add[1][$i]]['lat'] = ($entries[$data_add[1][$i]]['lat'] + trim($data_add[3][$i])) / 2;
  63. $entries[$data_add[1][$i]]['lon'] = ($entries[$data_add[1][$i]]['lon'] + trim($data_add[4][$i])) / 2;
  64. $entries[$data_add[1][$i]]['hdg'] = floor(($entries[$data_add[1][$i]]['hdg'] + $data_add[6][$i]) / 2);
  65. $entries[$data_add[1][$i]]['spd'] = floor(($entries[$data_add[1][$i]]['spd'] + $data_add[5][$i]*0.1944) / 2);
  66. $entries[$data_add[1][$i]]['alt'] = floor(($entries[$data_add[1][$i]]['alt'] + $data_add[2][$i]/100) / 2);
  67. } else {
  68. $entries[$data_add[1][$i]]['type'] = "add";
  69. $entries[$data_add[1][$i]]['lat'] = trim($data_add[3][$i]);
  70. $entries[$data_add[1][$i]]['lon'] = trim($data_add[4][$i]);
  71. $entries[$data_add[1][$i]]['hdg'] = $data_add[6][$i];
  72. $entries[$data_add[1][$i]]['spd'] = floor($data_add[5][$i]*0.1944); // *(0.36/1.852) dm/s => kts
  73. $entries[$data_add[1][$i]]['alt'] = floor($data_add[2][$i]/100);
  74. }
  75. }
  76. //foreach ( $entries as $key => $entry )
  77. echo $json = json_encode($entries);
  78. //include('statistics/logger.php');
  79. // print_r($data_add);
  80. file_put_contents($file, $json);
  81. }
  82. ?>