poll_adei_data.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. function show_status($done, $total, $size=30) {
  3. static $start_time;
  4. // if we go over our bound, just ignore it
  5. if($done > $total) return;
  6. if(empty($start_time)) $start_time=time();
  7. $now = time();
  8. $perc=(double)($done/$total);
  9. $bar=floor($perc*$size);
  10. $status_bar="\r[";
  11. $status_bar.=str_repeat("=", $bar);
  12. if($bar<$size){
  13. $status_bar.=">";
  14. $status_bar.=str_repeat(" ", $size-$bar);
  15. } else {
  16. $status_bar.="=";
  17. }
  18. $disp=number_format($perc*100, 0);
  19. $status_bar.="] $disp% $done/$total";
  20. $rate = ($now-$start_time)/$done;
  21. $left = $total - $done;
  22. $eta = round($rate * $left, 2);
  23. $elapsed = $now - $start_time;
  24. $status_bar.= " remaining: ".number_format($eta)." sec. elapsed: ".number_format($elapsed)." sec.";
  25. echo "$status_bar ";
  26. flush();
  27. // when done, send a newline
  28. if($done == $total) {
  29. echo "\n";
  30. }
  31. }
  32. // include channel list
  33. include "SDS_status_channels.php";
  34. $username = getenv('PHP_ADEI_USERNAME');
  35. $password = getenv('PHP_ADEI_PASSWORD');
  36. $context = stream_context_create(array(
  37. 'http' => array(
  38. 'header' => "Authorization: Basic " . base64_encode("$username:$password"), "Connection: close\r\n"
  39. )
  40. ));
  41. // set time zone to local German time
  42. date_default_timezone_set('Europe/Berlin');
  43. $counter = 0;
  44. $calltime = time();
  45. //do {
  46. $errorcount = 0;
  47. $errormessage = '<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
  48. $starttime = time();
  49. //echo "Polling ADEI data.".PHP_EOL;
  50. for ($id = 0; $id < sizeof($adeiChannel); $id++)
  51. {
  52. $adeiChannels = "";
  53. for ($id2 = 0; $id2 < sizeof($adeiChannel[$id]); $id2++)
  54. {
  55. $adeiChannels = $adeiChannels . $adeiChannel[$id][$id2] . ",";
  56. }
  57. $adeiChannels = substr($adeiChannels, 0, strlen($adeiChannels) - 1);
  58. //$fileip = file_get_contents("http://katrin.kit.edu/adei/services/getdata.php?db_server=virtual&db_name=srctree&db_group=-3&control_group=-3&virtual=srctree&srctree=" . $adeiChannels . "&window=50&format=csv", false, $context);
  59. //$fileip = file_get_contents("http://ipekatrinbackupserv1.ipe.kit.edu/adei/services/getdata.php?db_server=virtual&db_name=srctree&db_group=-3&control_group=-3&virtual=srctree&srctree=" . $adeiChannels . "&window=60&format=csv", false, $context);
  60. // $fileip = file_get_contents("http://katrin.kit.edu/adei-katrin/services/getdata.php?db_server=virtual&db_name=srctree&db_group=-3&control_group=-3&virtual=srctree&srctree=" . $adeiChannels . "&window=50&format=csv", false, $context);
  61. // new adei-katrin.kaas.kit.edu added
  62. //$fileip = file_get_contents("http://adei-katrin.kaas.kit.edu/adei/services/getdata.php?db_server=virtual&db_name=srctree&db_group=-3&control_group=-3&virtual=srctree&srctree=" . $adeiChannels . "&window=50&format=csv", false, $context);
  63. // new adei-katrin.kaas.kit.edu added and optimized readout parameters
  64. $fileip = file_get_contents("https://adei-katrin.kaas.kit.edu/adei/services/getdata.php?db_server=virtual&db_name=srctree&db_group=-3&control_group=-3&virtual=srctree&srctree=" . $adeiChannels . "&rt=full&window=3600,-1&format=csv", false, $context);
  65. //show_status($id+1,sizeof($adeiChannel));
  66. if (substr($fileip,0,5) == "ERROR")
  67. {$errorcount++; $errormessage = $errormessage . "Error loading ADEI channel " . $id . "<br>";}
  68. for ($id2 = sizeof($adeiChannel[$id]) - 1 ; $id2 > -1; $id2--)
  69. {
  70. $pos = strrpos($fileip, ",");
  71. $adeiValue[$id][$id2] = floatval(substr($fileip, $pos + 2));
  72. $fileip = substr($fileip, 0, $pos);
  73. //echo $id . " " . $id2 . " " . $adeiValue[$id][$id2] . PHP_EOL;
  74. }
  75. }
  76. if ($errorcount >0) echo $errormessage;
  77. // increse loop counter
  78. $counter ++;
  79. $stoptime = time();
  80. // $wait_till = $starttime + 11;
  81. if ($stoptime-$starttime > 10) {$errormessage .= "ERROR: delayed readout ".($stoptime-$starttime)." s "; $errorcount++;}
  82. //echo "Writing ADEI data to file.".PHP_EOL;
  83. $strFileContent = "<"."?php".PHP_EOL."$"."adeiValue = ".var_export($adeiValue, true).";".PHP_EOL.PHP_EOL;
  84. $strFileContent .= "$"."extraction_time = '". date(DATE_RFC850) ."';".PHP_EOL.PHP_EOL;
  85. $strFileContent .= "$"."extraction_timestamp = ". time() .";".PHP_EOL.PHP_EOL;
  86. $strFileContent .= "$"."errorcount = ". $errorcount .";".PHP_EOL.PHP_EOL;
  87. $strFileContent .= "$"."errormessage = '". $errormessage ."';".PHP_EOL.PHP_EOL;
  88. $strFileContent .= "$"."valuesincluded = 1;".PHP_EOL.PHP_EOL;
  89. $strFileContent .= "?".">".PHP_EOL;
  90. // write ADEI data to file
  91. $file_w = fopen('ADEIvalues.php', 'w+');
  92. //sleep(5);
  93. fwrite($file_w, $strFileContent);
  94. fclose($file_w);
  95. // write log file
  96. $log_message = "";
  97. $log_message = date(DATE_RFC850).": ADEI data polled: loop ".$counter;
  98. $log_message .= ", poll time ".($stoptime-$starttime)." s";
  99. if ($stoptime-$starttime > 15) $log_message .= ", delayed readout";
  100. $log_message .= PHP_EOL;
  101. $file_log = fopen('logs/poll_adei_data.log', 'a');
  102. fwrite($file_log, $log_message);
  103. fclose($file_log);
  104. //echo "Loop ".$counter." done.".PHP_EOL;
  105. // if ($wait_till <= $stoptime) sleep(3);
  106. // else time_sleep_until($wait_till);
  107. //} while (($counter < 10) && (time() < $calltime + 51));
  108. //echo "All loops done.".PHP_EOL;
  109. ?>