Newsgroup: it.comp.www.php
Titolo: PING con PHP

Se non riesco a raggiungere il server, ovvero il ping mi da esito negativo,
devo inviare un'email con oggetto specifico.
<?
$mittente = 
in...@dominio.it
;
$destinatario = "
TIZIO...@dominio.it
";
$oggetto = "SERVER DOWN";
$corpo = "Attenzione! Possibile blocco del Server";
$ip = "xxx.xx.xx.xxx";
$msg = "SERVER WEB e MAIL";
$ping = exec("ping $ip");
if (!$ping) {
mail("$destinatario", "$oggetto", "$corpo", "From: $msg <$mittente>");
}
?>
Perchè non funziona il PING???
Grazieeeee.......... !!!!
Riccardo.

Riccardo wrote:

prova: perchè di ping nono ne fa uno solo e quindi exec rimane in attesa 
all'infinto ?


   Cosa intendi con "funziona il PING"? La funzione exec() esegue un 
programma esterno e ritorna l'ultima riga del suo output. Poiche` ogni 
sistema operativo ha il suo ping che scrive cose diverse e nella lingua 
stabilita nella sua configurazione, dubito che sia questo il modo 
migliore per capire se una macchina e` "viva" oppure no.
   Se proprio vuoi usare questo metodo, ti consiglio di analizzare cosa 
risponda il programma ping sulla tua piattaforma in tutti i casi 
eventuali e poi di fare un mini-parsing del risultato di exec() in base 
a quanto da te evidenziato nella fase precedente.
[1] 
http://it.php.net/manual/it/function.exec.php
-- 
Alla prossima,
Marco

in caso di risposta positiva il risultato č:
64 octets from xxx.xx.xx.xxx: icmp_seq=14 ttl=255 time=0.0 ms
64 octets from xxx.xx.xx.xxx: icmp_seq=15 ttl=255 time=0.0 ms
64 octets from xxx.xx.xx.xxx: icmp_seq=16 ttl=255 time=0.0 ms
[...]
in caso negativo (macchina spenta) il risultato:
impiega talmente tanto tempo che non lo so...
In ogni caso, se non ho un risultato simile alla risposta positiva...
devo inviare un'email.
Come fare? ^__^
Riccardo.

 Come fare? ^__^
un man ping non sarebbe stato male...
ping xxx.xxx.xxx.xxx -c 5 -w 5 -n
spedisce (e riceve) 5 pacchetti (-c)
comunque vada, dopo 5 secondi esce (-w)
non perde tempo a risolvere l'alias (-n)
al termine puoi verificare secondo i tuoi desideri che esista qualcoisa del 
tipo:
"5 packets transmitted, 5 packets received, 0% packet loss"
utilizzando anche |tail -2 | head -1 (o un | grep)
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.nist.gov/dads/


   Prima di tutto, istruisci il tuo ping a fare quel che dici tu (numero 
limitato di pacchetti, timeout decente) e non quello che vuole lui... :)
	$exec_cmd="ping -c 5 -w 20 $host_or_ipaddr";
Dopodiche` esegui il comando e controlla l'ultima linea stampata: se 
tutto e` andato bene, dovrebbe contenere le statistiche per la sessione 
ping sul sito indicato, altrimenti il messaggio di errore.
	$ret_val=exec($exec_cmd);
	if("round-trip"!=substr($ret_val,0,10)) {
	  // send a mail... use $ret_val as body
	}
 
-- 
Alla prossima,
Marco

 Perchč non funziona il PING???
Dai un'occhiata alla pagina man del ping.
Io ti consiglierei queste opzioni:
-n 
non risolve il nome del sito, ma ti da solo il numero, quindi una
chiamata in meno al DNS
-q
ti da' il risultato solo quando ha finito
-c 1
spedisce un ping solo, che basta
 
quindi "ping -n -q -c 1"
Volendo puoi impostare un timeout in secondi con l'opzione -w
ciao
-- 
Marco Bernardini
bernama chiocciola libero it