Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt PHP - Laguje
Forum PHP.pl > Forum > Przedszkole
metonator
Siema, chcialbym sie spytac jak zmiejszyc ladowanie skryptu zeby wszystko to pozostalo ale zeby krocej czytalo, teraz czyta w 10-15 sekund

oto kod

  1. <style type="text/css">
  2. .bold {
  3. font-weight:bold;
  4. color:white;
  5. margin:10px 5px;
  6. }
  7. </style>
  8.  
  9. <span class=\"bold\"></span>
  10. <?php
  11. $servArray = array(
  12. "address" => "37.59.56.189",
  13. "adresip" => "<span class=\"bold\">s1.craftboard.pl</span>",
  14. "name" => "<span class=\"bold\"> Serwer 1 </span>",
  15. "img" => "<img src=http://serweryminecraft.pl/img/banner1.jpg>",
  16. "typ" => "<span class=\"bold\">Survival Games + Freebuild</span>"
  17. ),
  18. "address" => "46.4.172.22",
  19. "adresip" => "<span class=\"bold\">s2.craftboard.pl</span>",
  20. "name" => "<span class=\"bold\"> Serwer 2 </span>",
  21. "img" => "<img src=http://serweryminecraft.pl/img/banner2.jpg>",
  22. "typ" => "<span class=\"bold\">SG+FB</span>"
  23. ),
  24. "address" => "46.4.172.23",
  25. "adresip" => "<span class=\"bold\">s3.craftboard.pl</span>",
  26. "name" => "<span class=\"bold\"> Serwer 3 </span>",
  27. "img" => "<img src=http://serweryminecraft.pl/img/banner3.jpg>",
  28. "typ" => "<span class=\"bold\">SkyBlock</span>"
  29. ),
  30. "address" => "88.198.148.147",
  31. "adresip" => "<span class=\"bold\">s4.craftboard.pl</span>",
  32. "name" => "<span class=\"bold\"> Serwer 4 </span>",
  33. "img" => "<img src=http://serweryminecraft.pl/img/banner4.jpg>",
  34. "typ" => "<span class=\"bold\">Real Live</span>"
  35. )
  36. );
  37. //liczba serwerow: echo count($servArray);
  38. $port = 25565;
  39. ?>
  40. <table border="1">
  41.  
  42. <thead>
  43. <COL style="background-color: purple;">
  44. <COL style="background-color: purple;">
  45. <COL style="background-color: purple;">
  46. <COL style="background-color: purple;">
  47. <COL style="background-color: purple;">
  48.  
  49. <tr>
  50. <td>
  51. <span class=\"bold\"> NAZWA</span>
  52. </td>
  53. <td>
  54. <span class=\"bold\"> BANNER</span>
  55. </td>
  56. <td>
  57. <span class=\"bold\"> ADRES IP</span>
  58. </td>
  59. <td>
  60. <span class=\"bold\"> TYP SERWERA</span>
  61. </td>
  62. <td>
  63. <span class=\"bold\"> LICZBA GRACZY</span>
  64. </td>
  65.  
  66. </tr>
  67. </thead>
  68. <tbody>
  69. <?php
  70.  
  71. foreach($servArray as $serv)
  72. {
  73.  
  74. if ( $sock = @stream_socket_client('tcp://'.$serv["address"].':'.$port, $errno, $errstr, 1) )
  75. {
  76. fwrite($sock, "\xfe");
  77. $h = fread($sock, 2048);
  78. $h = str_replace("\x00", '', $h);
  79. $h = substr($h, 2);
  80. $data = explode("\xa7", $h);
  81. unset($h);
  82. fclose($sock);
  83.  
  84. if (sizeof($data) >= 3) {
  85. switch ($serv["address"])
  86. {
  87. case "37.59.56.189":
  88. $playersCountIndex = 7;
  89. $maxPlayersCountIndex = 8;
  90. break;
  91. case "46.4.172.22":
  92. $playersCountIndex = 8;
  93. $maxPlayersCountIndex = 9;
  94. break;
  95. case "46.4.172.23":
  96. $playersCountIndex = 7;
  97. $maxPlayersCountIndex = 8;
  98. break;
  99. case "88.198.148.147":
  100. $playersCountIndex = 8;
  101. $maxPlayersCountIndex = 9;
  102. break;
  103. }
  104. echo '<tr style="background-color: green;">';
  105. echo '<td>'.$serv["name"].'</td><td>'.$serv["img"].'</td><td>'.$serv["adresip"].'</td><td>'.$serv["typ"].'</td>';
  106. echo '<td><b>'.$data[$playersCountIndex].'/'.$data[$maxPlayersCountIndex].'</b></td>';
  107.  
  108. }
  109. else {
  110. echo '<tr style="background-color: red;">';
  111. echo '<td>'.$serv["name"].'</td><td>'.$serv["img"].'</td><td>'.$serv["adresip"].'</td><td>'.$serv["typ"].'</td><td>?</td>';
  112. }
  113. echo '</tr>';
  114. }
  115. else {
  116. echo '<tr style="background-color: green;">';
  117. echo '<td>'.$serv["name"].'</td><td>'.$serv["img"].'</td><td>'.$serv["adresip"].'</td><td>'.$serv["typ"].'</td><td></td>';
  118. }
  119.  
  120. }
  121. ?>
  122. </tbody>
  123. </table>
nospor
Tyle trwa oczekiwanie na odpowiedź serwera. Nic na to nie poradzisz.

Jedyne co możesz zrobić to cacheować wynik i podczas następnego łączenia wyświetlać już scachowany wynik. Zakładam, że dane nie będą się zmieniać co minutę. smile.gif
d3ut3r
ewentualnie, przerzuć ładowanie danych na AJAX, Wówczas możesz wyświetlić listę serwerów bez zbędnych opóźnień, a informacje będą się uzupełniać w miarę jak kolejne requesty się wykonają.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.