Cześć, mam problem ze statusem serwera, pobieram dane do sprawdzenia statusu z MySQL i mój kod wygląda tak:

  1. $wynik = mysql_query("SELECT * FROM serwer WHERE user_id='".$uzytkownik['id']."'") or die('Błąd zapytania');
  2. while($r = mysql_fetch_assoc($wynik)) {
  3.  
  4. $serwer=$r['srv']; // adres serwera //
  5. $port=$r['port']; // port //
  6. $socket=@fsockopen($serwer,$port,$errno,$errstr,2);
  7. if($socket==true){echo "<h1>Działa</h1><br />Akcja:<br /><a href='?a=akcja1&p=".$r['port']."'>Akcja 1</a> | <a href='?a=akcja2&p=".$r['port']."'>Akcja 2</a>";}
  8. else{echo "<h1>Nie działa</h1><br />Akcja:<br /><a href='?a=akcja3&p=".$r['port']."'>Akcja 1</a> | <a href='?a=akcja4&p=".$r['port']."'>Akcja 2</a>";}
  9.  
  10. }


Na stronie dla danego użytkownika, czasami jest nawet i 10 serwerów do sprawdzenia ich statusu, wszystko jest pięknie i ładnie gdy każdy serwer "Działa", ale gdy tylko chociaż jeden będzie "Nie działa" to od razu ładowanie strony zwiększa się, co jest rzecz jasna normalne, pomyślałem aby zrobić coś takiego:

Załadować całą stroną a w tym miejscu gdzie mają się wyświetlać te akcje dać jakiś tekst: "Trwa Ładowanie" lub coś w tym stylu, tak aby to działało niezależnie czyli przykładowo te które są Online to się od razu wyświetlą, a te które są Offline wyświetlą się za te np.: 2 sekundy (tak jak jest zapisane w fsockopen)..

Myślałem aby to dać do pliku JS, ale musiał bym jakoś wysłać temu plikowi zmienne jakim są: $r['srv']; i $r['port']; jakie są pokazywane dla każdego serwera osobno, no chyba że jest jakiś inny sposób ?.

Pozdrawiam i z góry bardzo dziękuje za każdą odpowiedz wink.gif.

Poradziłem sobie w 60%.

PHP (wyświetlanie ogólne)

  1. $wynik = mysql_query("SELECT * FROM serwer WHERE user_id='".$uzytkownik['id']."'") or die('Błąd zapytania');
  2. while($r = mysql_fetch_assoc($wynik)) {
  3.  
  4. echo "
  5. <div>
  6. <br />
  7. Nazwa: ".$r['nazwa']." <br />
  8. IP: ".$r['ip']." <br />
  9. Port: ".$r['port']."
  10. Status: <div id='status'>";
  11. $plik = 'inc/status.php';
  12. require($plik);
  13. </div>
  14. <br />
  15. <hr>
  16. </div>";
  17. }


JS:
[JAVASCRIPT] pobierz, plaintext
  1. window.setInterval(function(){
  2. $("#status").load("inc/status.php");
  3. },5000);
[JAVASCRIPT] pobierz, plaintext


PHP (Wyświetlanie statusu).

  1. <?php
  2. $serwer=$_GET['ip'];
  3. $port=$_GET['p'];
  4.  
  5. $socket=@fsockopen($serwer,$port,$errno,$errstr,2);
  6. if($socket==true){echo "ON";}else{echo "OFF";}
  7.  
  8. ?>


I teraz mam 2 problemy.

1. Gdy serwer nie działa i tak strona długo się ładuje..
2. Jak przesłać GET'em informację, gdy daję w require jakieś zapytanie do get'a od razu wywala błąd.

Pozdrawiam.