autoshape.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. $SERVERS_COUNT=3;
  3. $TIMEOUT=50;
  4. if(file_exists(".config.php")) include(".config.php");
  5. require("$komputery_arr");
  6. $ADM_USER="$SQL_USER";
  7. $ADM_USER_PASS="$SQL_USER_PASS";
  8. $error5="ERROR: Przykro nam, serwis jest dostepny wylacznie dla autoryzowanych uzytkownikow\n";
  9. if(in_array("$REMOTE_ADDR",$KOMPUTERY)) $czy_error_5=1 ;
  10. if(!$czy_error_5) die($error5);
  11. if (!$nodeid) die("ERROR: Blad danych\n");
  12. $conn=mysql_pconnect($INTERFACE_ADDR,$ADM_USER,$ADM_USER_PASS);
  13. if (!$conn) die("ERROR: Blad polaczenia z baza\n");
  14. mysql_select_db($SQL_DATABASE) or die("ERROR: Blad wyboru bazy\n");
  15. $query="SELECT unix_timestamp(now())-unix_timestamp(TIMESTAMP) AS DELAY FROM AUTOSHAPE WHERE SERVER='$nodeid'";
  16. do {
  17. $result=mysql_query($query,$conn) or die("ERROR: 1\n");
  18. if ($row=mysql_fetch_object($result)) {
  19. $delay="$row->DELAY";
  20. if ($delay>60) {
  21. $queries[]="DELETE FROM AUTOSHAPE WHERE SERVER='$nodeid'";
  22. $queries[]="DELETE FROM AUTOSHAPE_GET WHERE SERVER='$nodeid'";
  23. foreach ($queries as $query2) mysql_query($query2,$conn) or die("ERROR: 2\n$query2\n");
  24. } else sleep(1);
  25. }
  26. } while ($row);
  27. foreach ($_GET as $tr => $val) {
  28. if ($tr != "nodeid") $query = "INSERT INTO AUTOSHAPE_GET (SERVER,TR,VAL) VALUES ('$nodeid','$tr','$val')\n";
  29. mysql_query($query,$conn) or die("ERROR: 3\n$query\n");
  30. }
  31. $query = "INSERT INTO AUTOSHAPE (SERVER) VALUES ('$nodeid');\n";
  32. mysql_query($query,$conn) or die("ERROR: 3\n$query\n");
  33. $query = "SELECT COUNT(*) AS COUNT FROM AUTOSHAPE";
  34. $result=mysql_query($query,$conn) or die("ERROR: 3\n$query\n");
  35. $row=mysql_fetch_object($result);
  36. $count="$row->COUNT";
  37. if ($count==$SERVERS_COUNT) {
  38. $query="SELECT TR,MAX(VAL) AS VAL FROM AUTOSHAPE_GET GROUP BY TR";
  39. $result=mysql_query($query,$conn) or die("ERROR: 4\n");
  40. while ($row=mysql_fetch_object($result)) {
  41. $tr="$row->TR";
  42. $val="$row->VAL";
  43. $t[$tr]=$val;
  44. if (isset($req)) $req=$req . ",";
  45. $req=$req . "$tr=$val";
  46. }
  47. if ($t[a2_3]*$t[a2_4]*$t[a2_5]*$t[a3_2]*$t[a3_4]*$t[a3_5]*$t[a4_2]*$t[a4_3]*$t[a5_2]*$t[a5_3]==0) $wynik="ERROR: Blad danych";
  48. else {
  49. require("autoshape-config.php");
  50. $query="SELECT VAL FROM AUTOSHAPE_HIST WHERE VAL NOT LIKE 'ERROR%' ORDER BY TIMESTAMP DESC LIMIT 1";
  51. $result=mysql_query($query,$conn) or die("ERROR: 4.2\n");
  52. if ($row=mysql_fetch_object($result)) {
  53. $last="$row->VAL";
  54. $last=str_replace("=","=>",$last);
  55. eval("\$tl=Array($last);");
  56. }
  57. if ($t[a4_3]<$CIR) $t[a4_3]=$CIR;
  58. if ($t[a5_3]<$CIR) $t[a5_3]=$CIR;
  59. if ($t[a3_4]<$CIR) $t[a3_4]=$CIR;
  60. if ($t[a3_5]<$CIR) $t[a3_5]=$CIR;
  61. if ($t[a2_3]<$CIR) $t[a2_3]=$CIR;
  62. if ($t[a2_4]<$CIR) $t[a2_4]=$CIR;
  63. if ($t[a2_5]<$CIR) $t[a2_5]=$CIR;
  64. if ($t[a3_2]<$CIR) $t[a3_2]=$CIR;
  65. if ($t[a4_2]<$CIR) $t[a4_2]=$CIR;
  66. if ($t[a5_2]<$CIR) $t[a5_2]=$CIR;
  67. if ($tl[b4_3]<$CIR) $tl[b4_3]=$CIR;
  68. if ($tl[b5_3]<$CIR) $tl[b5_3]=$CIR;
  69. if ($tl[b3_4]<$CIR) $tl[b3_4]=$CIR;
  70. if ($tl[b3_5]<$CIR) $tl[b3_5]=$CIR;
  71. if ($tl[b2_3]<$CIR) $tl[b2_3]=$CIR;
  72. if ($tl[b2_4]<$CIR) $tl[b2_4]=$CIR;
  73. if ($tl[b2_5]<$CIR) $tl[b2_5]=$CIR;
  74. if ($tl[b3_2]<$CIR) $tl[b3_2]=$CIR;
  75. if ($tl[b4_2]<$CIR) $tl[b4_2]=$CIR;
  76. if ($tl[b5_2]<$CIR) $tl[b5_2]=$CIR;
  77. //Ruch do Internetu
  78. $as_2=$t[a3_2]+$t[a4_2]+$t[a5_2]+$tl[b3_2]+$tl[b4_2]+$tl[b5_2];
  79. $t2[b3_2]=round(($t[a3_2]+$tl[b3_2])*$ATM/$as_2);
  80. if ($t2[b3_2]>$RL_M_NET_MAX) $t2[b3_2]=$RL_M_NET_MAX;
  81. $t2[b4_2]=round(($t[a4_2]+$tl[b4_2])*$ATM/$as_2);
  82. $t2[b5_2]=round(($t[a5_2]+$tl[b5_2])*$ATM/$as_2);
  83. if (($c_z=$t2[b4_2]+$t2[b5_2])>$RL_C_NET_MAX) {
  84. // $t2[b3_2]=$ATM-$RL_C_NET_MAX;
  85. $t2[b4_2]=round($t2[b4_2]*$RL_C_NET_MAX/$c_z);
  86. $t2[b5_2]=round($t2[b5_2]*$RL_C_NET_MAX/$c_z);
  87. }
  88. //Ruch z Internetu
  89. $a2_s=$t[a2_3]+$t[a2_4]+$t[a2_5]+$tl[b2_3]+$tl[b2_4]+$tl[b2_5];
  90. $t2[b2_3]=round(($t[a2_3]+$tl[b2_3])*$ATM/$a2_s);
  91. if ($t2[b2_3]>$RL_M_NET_MAX) $t2[b2_3]=$RL_M_NET_MAX;
  92. $t2[b2_4]=round(($t[a2_4]+$tl[b2_4])*$ATM/$a2_s);
  93. $t2[b2_5]=round(($t[a2_5]+$tl[b2_5])*$ATM/$a2_s);
  94. if (($z_c=$t2[b2_4]+$t2[b2_5])>$RL_C_NET_MAX) {
  95. // $t2[b2_3]=$ATM-$RL_C_NET_MAX;
  96. $t2[b2_4]=round($t2[b2_4]*$RL_C_NET_MAX/$z_c);
  97. $t2[b2_5]=round($t2[b2_5]*$RL_C_NET_MAX/$z_c);
  98. }
  99. //Ruch z Moreny do Chelmu
  100. $as_c=$t[a3_4]+$t[a3_5]+$tl[b3_4]+$tl[b3_5];
  101. $bs_c=$RL_M-$t2[b3_2];
  102. if ($bs_c+$t2[b2_4]+$t2[b2_5]>$RL_C) $bs_c=$RL_C-$t2[b2_4]-$t2[b2_5];
  103. $t2[b3_4]=round(($t[a3_4]+$tl[b3_4])*$bs_c/$as_c);
  104. $t2[b3_5]=round(($t[a3_5]+$tl[b3_5])*$bs_c/$as_c);
  105. //Ruch z Chelmu do Moreny
  106. $as_m=$t[a4_3]+$t[a5_3]+$tl[b4_3]+$tl[b5_3];
  107. $bs_m=$RL_M-$t2[b2_3];
  108. if ($bs_m+$t2[b4_2]+$t2[b5_2]>$RL_C) $bs_m=$RL_C-$t2[b4_2]-$t2[b5_2];
  109. $t2[b4_3]=round(($t[a4_3]+$tl[b4_3])*$bs_m/$as_m);
  110. $t2[b5_3]=round(($t[a5_3]+$tl[b5_3])*$bs_m/$as_m);
  111. #$as_m=$t[a4_3]+$t[a5_3]+$tl[b4_3]+$tl[b5_3];
  112. #$bs_m=$RL_C-$t2[b4_2]-$t2[b5_2];
  113. #if ($bs_m+$t2[b2_3]>$RL_M) $bs_m=$RL_M-$t2[b2_3];
  114. #$t2[b4_3]=round(($t[a4_3]+$tl[b4_3])*$bs_m/$as_m);
  115. #$t2[b5_3]=round(($t[a5_3]+$tl[b5_3])*$bs_m/$as_m);
  116. //Ruch hub1-hub3
  117. $t2[b4_5]=0;
  118. $t2[b5_4]=0;
  119. foreach ($t2 as $tr => $val) {
  120. if (isset($wynik)) $wynik=$wynik . ",";
  121. $wynik=$wynik . "$tr=$val";
  122. }
  123. //$wynik="b2_3=$b2_3,b2_4=$b2_4,b2_5=$b2_5,b3_2=$b3_2,b3_4=$b3_4,b3_5=$b3_5,b4_2=$b4_2,b4_3=$b4_3,b4_5=$b4_5,b5_2=$b5_2,b5_3=$b5_3,b5_4=$b5_4";
  124. }
  125. $queries[]="UPDATE AUTOSHAPE SET VAL='$wynik'";
  126. $queries[]="DELETE FROM AUTOSHAPE WHERE SERVER='$nodeid'";
  127. $queries[]="TRUNCATE TABLE AUTOSHAPE_GET";
  128. $queries[]="INSERT INTO AUTOSHAPE_HIST (VAL,REQ) VALUES ('$wynik','$req')";
  129. foreach ($queries as $query) mysql_query($query,$conn) or die("ERROR: 4\n$query\n");
  130. } else {
  131. while (!$wynik) {
  132. $query="SELECT VAL FROM AUTOSHAPE WHERE SERVER='$nodeid' AND VAL IS NOT NULL";
  133. $result=mysql_query($query,$conn) or die("ERROR: 5\n");
  134. if ($row=mysql_fetch_object($result)) {
  135. $wynik="$row->VAL";
  136. $query="DELETE FROM AUTOSHAPE WHERE SERVER='$nodeid'";
  137. mysql_query($query,$conn) or die("ERROR: 6\n");
  138. } else {
  139. $w+=1;
  140. if ($w==$TIMEOUT) {
  141. $queries[]="DELETE FROM AUTOSHAPE WHERE SERVER='$nodeid'";
  142. $queries[]="DELETE FROM AUTOSHAPE_GET WHERE SERVER='$nodeid'";
  143. foreach ($queries as $query) mysql_query($query,$conn) or die("ERROR: 7\n$query\n");
  144. die("ERROR: Timeout\n");
  145. }
  146. sleep(1);
  147. }
  148. }
  149. }
  150. echo "$wynik";
  151. ?>