Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Stop po x sekundach
mihau_koval
post 22.06.2009, 21:19:24
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.04.2009

Ostrzeżenie: (0%)
-----


Witam. Mam kod:
  1. <?php
  2. $ip = "jakies ip";
  3. $port = "port";
  4.  
  5. // Nad tym IP i PORT serwera
  6.  
  7. $fp = fsockopen('udp://' . $ip, $port, $errno, $errstr,0.0);
  8. if (!$fp)
  9. {
  10. echo "Socket Error: $errno - $errstr";
  11. }
  12. else
  13. {
  14. $packet = 'SAMP';
  15. $packet .= chr(strtok($ip, '.'));
  16. $packet .= chr(strtok('.'));
  17. $packet .= chr(strtok('.'));
  18. $packet .= chr(strtok('.'));
  19. $packet .= chr($port & 0xFF);
  20. $packet .= chr($port >> 8 & 0xFF);
  21.  
  22. fwrite($fp, $packet.'i');
  23. fread($fp, 11);
  24. $is_passworded = ord(fread($fp, 1));
  25. $plr_count = ord(fread($fp, 2));
  26. $max_plrs = ord(fread($fp, 2));
  27.  
  28. $strlen    = ord(fread($fp, 4));
  29. $hostname   = fread($fp, $strlen);
  30.  
  31. $strlen    = ord(fread($fp, 4));
  32. $gamemode   = fread($fp, $strlen);
  33.  
  34. $strlen    = ord(fread($fp, 4));
  35. $mapname    = fread($fp, $strlen);
  36.  
  37.  
  38.  
  39.  
  40. $wyswietl = "$hostname<br>";
  41. $wyswietl .= "IP: $ip:$port<br>";
  42. $wyswietl .= "Mapa: ".$gamemode."<br>";
  43. $wyswietl .= "Gra: ".$mapname."<br>";
  44. if ($is_passworded)
  45. {
  46. $wyswietl .= "Hasło: tak<br>";
  47. }
  48. else
  49. {
  50. $wyswietl .= "Hasło: nie<br>";
  51. }
  52.  
  53. $wyswietl .= "Gracze: ".$plr_count."/".$max_plrs."<br>";
  54.  
  55. fclose($fp);
  56. }
  57. ?>

Teraz chcę zrobić tak, że gdy skrypt nie dostanie odpowiedzi po X sekundach, wyświetla komunikat, że serwer jest offline
Go to the top of the page
+Quote Post
erix
post 22.06.2009, 21:38:01
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No to jak pakiet będziesz miał pusty, to chyba oczywiste, że nic nie ma?

A timeout ustawiasz w bodajże piątym parametrze fsockopen" title="Zobacz w manualu PHP" target="_manual.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
mihau_koval
post 22.06.2009, 22:20:33
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.04.2009

Ostrzeżenie: (0%)
-----


No zrobiłem tak:
  1. <?php
  2. $ip='91.203.132.162';
  3. $port='7799';
  4.  
  5. $fp = fsockopen('udp://' . $ip, $port, $errno, $errstr,5);
  6. if (!$fp)
  7. {
  8. $wyswietl = "Serwer jest offline! $errno - $errstr";
  9. }
  10. else
  11. {
  12. $packet = 'SAMP';
  13. $packet .= chr(strtok($ip, '.'));
  14. $packet .= chr(strtok('.'));
  15. $packet .= chr(strtok('.'));
  16. $packet .= chr(strtok('.'));
  17. $packet .= chr($port & 0xFF);
  18. $packet .= chr($port >> 8 & 0xFF);
  19.  
  20. fwrite($fp, $packet.'i');
  21. fread($fp, 11);
  22. $is_passworded = ord(fread($fp, 1));
  23. $plr_count = ord(fread($fp, 2));
  24. $max_plrs = ord(fread($fp, 2));
  25.  
  26. $strlen    = ord(fread($fp, 4));
  27. $hostname   = fread($fp, $strlen);
  28.  
  29. $strlen    = ord(fread($fp, 4));
  30. $gamemode   = fread($fp, $strlen);
  31.  
  32. $strlen    = ord(fread($fp, 4));
  33. $mapname    = fread($fp, $strlen);
  34.  
  35.  
  36.  
  37.  
  38. $wyswietl = "$hostname<br>";
  39. $wyswietl .= "IP: $ip:$port<br>";
  40. $wyswietl .= "Mapa: ".$gamemode."<br>";
  41. $wyswietl .= "Gra: ".$mapname."<br>";
  42. if ($is_passworded)
  43. {
  44. $wyswietl .= "Hasło: tak<br>";
  45. }
  46. else
  47. {
  48. $wyswietl .= "Hasło: nie<br>";
  49. }
  50.  
  51. $wyswietl .= "Gracze: ".$plr_count."/".$max_plrs."<br>";
  52.  
  53. fclose($fp);
  54. }
  55. ?>

I dalej nie pokazuje się że serwer jest offline, a php jakby się "zawiesza"
Go to the top of the page
+Quote Post
erix
post 22.06.2009, 22:54:08
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Powiedziałem - sprawdzasz, czy pakiet jest pusty, a nie połączenie.

Możesz jeszcze się pobawić ustawieniami stream_set_blocking" title="Zobacz w manualu PHP" target="_manual.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
mihau_koval
post 22.06.2009, 23:28:27
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.04.2009

Ostrzeżenie: (0%)
-----


Może mógłbym prosić o troszkę więcej wskazówek, bo w php nie jestem pr0, a kod nie jest mój
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 01:53