Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] spr dzialania serwera
hhg
post 8.05.2007, 23:34:23
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
webdice
post 9.05.2007, 00:38:20
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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. ?>


Ten post edytował webdicepl 9.05.2007, 00:41:49
Go to the top of the page
+Quote Post
hhg
post 9.05.2007, 09:40:10
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


ok, ale ja bym chcial w przyszlosci podac wiecej portow dla tej domeny a tablica by przekazala dane masowo zamiast kilkudziesieciu argumentow..

Ten post edytował hhg 9.05.2007, 09:44:47
Go to the top of the page
+Quote Post
Pyton_000
post 9.05.2007, 09:54:47
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.
Go to the top of the page
+Quote Post
hhg
post 9.05.2007, 10:00:07
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


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

Ten post edytował hhg 9.05.2007, 10:00:39
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: 19.07.2025 - 02:36