Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] spr dzialania serwera
Forum PHP.pl > Forum > Przedszkole
hhg
mam pytanie,

funkcja w ponizszym kodzie sprawdza czy serwer odpowiada a jezeli nie wysyla e-mail do admina

dlaczego pomomimo ze wywoluje funkcje dla sprawdzania domeny onet.pl i portu 80 to dostaje e-mail o temacie:
"www.onet.pl:22 nie odpowiada"

sprawdzalem z czym wywolywana jest funkcja i jest prawidlowo: para 'www.onet.pl' oraz port 80.

Pozniej w funkcji cos sie dzieje ze dostaje e-mail z portem od innej strony
nie wiem gdzie robie blad

  1. <?php
  2.  
  3. class Host
  4. {
  5. var $addr;
  6. var $tPorts;
  7.  
  8. function host($p,$a)
  9. {
  10. $this->tPorts = $p;
  11. $this->addr = $a;
  12. }
  13.  
  14. }
  15.  
  16.  
  17. function Check($host,$port) {
  18.  
  19.  
  20. if(!fsockopen($host, $port, $errno, $errstr, 30)) {
  21.  
  22. echo 'Kod bledu: ' . $errno;
  23. echo 'Tresc bledu: ' . $errstr;
  24.  
  25. $headers = "MIME-Version: 1.0rn";
  26. $headers .= "Content-type: text/html; charset=iso-8859-2rn";
  27. $headers .= "From: wap@serwerow.plrn";
  28.  
  29. $message = 'tu bedzie tresc bledu';
  30. $subject = 'host: ' . $host . ':' . $port . ' nie odpowiada';
  31.  
  32.  
  33.  
  34. $receiver1 = 'fool1@example.com';
  35. $receiver2 = 'fool2@example.com';
  36.  
  37. if ( !mail($receiver1,$subject,$message,$headers) || !mail($receiver2,$subject,$message,$headers) ) {
  38. error_log('errorlog.dat',time() . ' host: ' . $host . ':' . $port . ' nie odpowiada',3,'errorlog.dat');
  39. }
  40.  
  41. }
  42.  
  43. }
  44.  
  45. // lista obiektow:
  46. $onet = new host(array(80),'www.onet.pl');
  47. $sirius = new host(array(22),'www.wp.pl');
  48.  
  49.  
  50. $lHosts = count ($hosts = array($onet,$sirius));
  51.  
  52. while (true)
  53. {
  54.  
  55. for ($i=0;$i<$lHosts;$i++)
  56. {
  57. $nPorts = count ($hosts[$i]->tPorts);
  58.  
  59. for ($j=0;$j<$nPorts;$j++)
  60. Check($hosts[$i]->addr,$hosts[$i]->tPorts[$j]);
  61. }
  62.  
  63. //sleep(15*60);
  64.  
  65. }
  66.  
  67.  
  68. ?>
webdice
Cytat(hhg @ 9.05.2007, 00:34:23 ) *
$onet = new host(array(80),'www.onet.pl');
$sirius = new host(array(22),'www.wp.pl');


Funckja host otrzymuje port jako tablice, a powinna dostać liczbę, dlatego fsockopen" title="Zobacz w manualu PHP" target="_manual nie może się połączyć się z serwerem i wysyła Ci mail'a. Zrób tak:

  1. <?php
  2. $onet = new host(80,'www.onet.pl');
  3. $sirius = new host(22,'www.wp.pl');
  4. ?>
hhg
ok, ale ja bym chcial w przyszlosci podac wiecej portow dla tej domeny a tablica by przekazala dane masowo zamiast kilkudziesieciu argumentow..
Pyton_000
To musisz sobie funkcje przerobić tak aby wywalała z tablicy elementy i łączyła się z każdym znnich.

I musisz sobie zakładać na pocz, czy przekazywana będzie tablica czy poedynczy arg.
hhg
hmm ale IMO przekazywanie arguemntow jest OK
bo sa obiekty - hosty a pozniej w petli

  1. <?php
  2. while (true)
  3. {
  4.  
  5. for ($i=0;$i<$lHosts;$i++)
  6. {
  7. $nPorts = count ($hosts[$i]->tPorts);
  8.  
  9. for ($j=0;$j<$nPorts;$j++)
  10. Check($hosts[$i]->addr,$hosts[$i]->tPorts[$j]);
  11. }
  12.  
  13. //sleep(15*60);
  14.  
  15. }
  16. ?>



przy wywolaniu funkcji Check() odwoluje sie tylko do elementow tablicy a nie przekazuje calej tablicy...
moge sie of course mylic
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.