Buscar

¿Cómo hacer ping mediante código PHP?


 
 Old 26 dic 2008, 19:40   #1 (permalink)  
Miembro activo
 
Avatar de cyberexplorador
 
Registrado: agosto 2006
Ubicación: Quito, Ecuador
Mensajes: 298

Predeterminado ¿Cómo hacer ping mediante código PHP?

He estado buscando la info en internet y encontré un código básico que es:

Código PHP:
<?[url=http://php.softonic.com]php[/url]
       
$comando "ping localhost";
       
$salida=shell_exec($comando);
       echo 
$salida;
?>
Sin embargo yo necesito establecer cuántas veces quiero que haga ping al dominio o a la dirección IP y quisiera obtener el valor de tiempo medio que se demora en hacer Ping. Algo como lo que se hace en esta página: http://ping.eu/ping/

Alguna idea?
cyberexplorador is offline   Citar y responder
 
 Old 26 dic 2008, 19:42   #2 (permalink)  
Miembro activo
 
Avatar de cyberexplorador
 
Registrado: agosto 2006
Ubicación: Quito, Ecuador
Mensajes: 298

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

En el ejemplo básico me da el tiempo medio, pero cómo puedo obtener ese valor para almacenarlo en una base de datos. Ya que ese código me da mucha información.
cyberexplorador is offline   Citar y responder
 
 Old 26 dic 2008, 20:52   #3 (permalink)  
Moderador
 
Avatar de the_ma3x
 
Registrado: febrero 2005
Ubicación: México
Mensajes: 4.325

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Código PHP:
<?[url=http://php.softonic.com]php[/url] 
       
$comando "ping localhost > C:\Resultados.txt"
       
$salida=shell_exec($comando); 
       echo 
$salida
?>
Obviamente, la pagina debe tener permisos de escritura en el directorio y ya con las funciones de PHP puedes leer el archivo, almacenarlo en un BD si quieres y sacar el promedio.



Saludines

Every wall is a door. Ralph Waldo Emerson
the_ma3x is offline   Citar y responder
 
 Old 26 dic 2008, 22:14   #4 (permalink)  
Miembro activo
 
Avatar de cyberexplorador
 
Registrado: agosto 2006
Ubicación: Quito, Ecuador
Mensajes: 298

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Cita:
the_ma3x escribió: Ver post
Código PHP:
<?[url=http://php.softonic.com]php[/url] 
       
$comando "ping localhost > C:\Resultados.txt"
       
$salida=shell_exec($comando); 
       echo 
$salida
?>
Obviamente, la pagina debe tener permisos de escritura en el directorio y ya con las funciones de PHP puedes leer el archivo, almacenarlo en un BD si quieres y sacar el promedio.



Saludines

Mira cuando ejecuto el código que puse me devuelve esto:

Código:
Haciendo ping a www.yahoo-ht3.akadns.net [209.191.93.52] con 32 bytes de datos: Respuesta desde 209.191.93.52: bytes=32 tiempo=139ms TTL=49 Respuesta desde 209.191.93.52: bytes=32 tiempo=226ms TTL=49 Respuesta desde 209.191.93.52: bytes=32 tiempo=114ms TTL=49 Respuesta desde 209.191.93.52: bytes=32 tiempo=282ms TTL=49 Estad¡sticas de ping para 209.191.93.52: Paquetes: enviados = 4, recibidos = 4, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: M¡nimo = 114ms, M ximo = 282ms, Media = 190ms
Cómo podría hacer para que me salga un salto de línea?. Porque todo me aparece amontonado. Además este código me devuelve el dato: Media = 190ms hay algún código en el php que me permita capturar ese valor específico, porque ese valor es el que necesito almacenar en la base de datos de MySQL. Los demás datos si quiero que aparezcan pero quiero almacenar ese dato y la dirección a donde hice ping, además de la hora y fecha a la que se hizo la consulta, pero bueno eso tengo una idea de cómo hacerlo, pero lo otro no. Tienes alguna idea.
cyberexplorador is offline   Citar y responder
 
 Old 27 dic 2008, 01:51   #5 (permalink)  
Moderador
 
Avatar de the_ma3x
 
Registrado: febrero 2005
Ubicación: México
Mensajes: 4.325

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Nop, en este caso tendrás que parsear el texto, leerlo y guardar el dato que tu quieras. No hay una manera de que solo te guarde un dato en particular.

Son los detallitos de leer archivos de texto. Es algo complicado, pero no te queda de otra.

Saludines

Every wall is a door. Ralph Waldo Emerson
the_ma3x is offline   Citar y responder
 
 Old 28 dic 2008, 02:12   #6 (permalink)  
Miembro activo
 
Avatar de selken
 
Registrado: mayo 2007
Ubicación: El Salvador
Mensajes: 1.216

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

hola

Lo que puedes haces es jugar con la cadena de parámetros que puede recibir el ping, para que produzca el output más cercano a tus requerimientos.... ya sabes... ping -a, ping -t, etc....

salup xD

Al llegar a la meta el camino sigue...
Strength, Power, Will, Passion!!!
selken is offline   Citar y responder
 
 Old 28 dic 2008, 12:26   #7 (permalink)  
Banead@
 
Avatar de Halo.DM
 
Registrado: octubre 2008
Mensajes: 136

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Tienes que tener en cuenta que no estás haciendo que PHP haga un ping, sino que está ejecutando un comando desde una Shell. Eso has de tenerlo muy claro.

La solución pasa por lo que te comenta The Max, parsear el txt (que no es nada complicado, con explode creas un array con los diferentes valores que hay en una linea de texto) y manipular los datos como mejor te convenga. En general, lo que necesitas, no es nada complicado. Yo en mi trabajo creo muchos scripts que parsean TXT´s y obtienen los datos con los que después hago lo que me interesa, y es muy sencillo. De hecho, aunque hay maneras de acceder a archivos xls, me he acostumbrado a parsear así, y lo que hago es grabar los xls como csv para después parsearlos. Manías, supongo.
Halo.DM is offline   Citar y responder
 
 Old 30 dic 2008, 19:22   #8 (permalink)  
Miembro activo
 
Avatar de R_A_F_A
 
Registrado: septiembre 2005
Ubicación: València
Mensajes: 2.062

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Yo uso esta función
Código PHP:
function hacerPing($host)
{
       
$package "\x08\x00\x19\x2f\x00\x00\x00\x00\x70\x69\x6e\x67";

       
/* create the socket, the last '1' denotes ICMP */
       
$socket socket_create(AF_INETSOCK_RAW1);

       
/* set socket receive timeout to 1 second */
       
socket_set_option($socketSOL_SOCKETSO_RCVTIMEO, array("sec" => 1"usec" => 0));

       
/* connect to socket */
       
@socket_connect($socket$hostnull);

       
/* record start time */
       
list($start_usec$start_sec) = explode(" "microtime());
       
$start_time = ((float) $start_usec + (float) $start_sec);

       @
socket_send($socket$packagestrlen($package), 0);

       if(@
socket_read($socket255)) {
           list(
$end_usec$end_sec) = explode(" "microtime());
           
$end_time = ((float) $end_usec + (float) $end_sec);

           
$total_time $end_time $start_time;
           
socket_close($socket);

           return 
$total_time;
       } else {
           return 
false;
       }

La encontré en los comentarios de php.net y la verdad es que funciona muy bien, aunque tuve que añadirle las arrobas para que no petara si la dirección no existía. Devuelve lo que ha tardado en caso de éxito, y falso si ha fallado.

Y para usarla, simplemente
Código PHP:
$resultado hacerPing('www.google.es'); 

Editado por R_A_F_A en 30 dic 2008 a las 19:28.

████████████████████████
R_A_F_A is offline   Citar y responder
 
 Old 02 ene 2009, 00:05   #9 (permalink)  
Miembro activo
 
Avatar de cyberexplorador
 
Registrado: agosto 2006
Ubicación: Quito, Ecuador
Mensajes: 298

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Cita:
R_A_F_A escribió: Ver post
Yo uso esta función
Código PHP:
function hacerPing($host)
{
       
$package "\x08\x00\x19\x2f\x00\x00\x00\x00\x70\x69\x6e\x67";

       
/* create the socket, the last '1' denotes ICMP */
       
$socket socket_create(AF_INETSOCK_RAW1);

       
/* set socket receive timeout to 1 second */
       
socket_set_option($socketSOL_SOCKETSO_RCVTIMEO, array("sec" => 1"usec" => 0));

       
/* connect to socket */
       
@socket_connect($socket$hostnull);

       
/* record start time */
       
list($start_usec$start_sec) = explode(" "microtime());
       
$start_time = ((float) $start_usec + (float) $start_sec);

       @
socket_send($socket$packagestrlen($package), 0);

       if(@
socket_read($socket255)) {
           list(
$end_usec$end_sec) = explode(" "microtime());
           
$end_time = ((float) $end_usec + (float) $end_sec);

           
$total_time $end_time $start_time;
           
socket_close($socket);

           return 
$total_time;
       } else {
           return 
false;
       }

La encontré en los comentarios de php.net y la verdad es que funciona muy bien, aunque tuve que añadirle las arrobas para que no petara si la dirección no existía. Devuelve lo que ha tardado en caso de éxito, y falso si ha fallado.

Y para usarla, simplemente
Código PHP:
$resultado hacerPing('www.google.es'); 
Gracias. Voy a probarlo.
cyberexplorador is offline   Citar y responder
 
 Old 02 ene 2009, 01:20   #10 (permalink)  
Miembro activo
 
Avatar de cyberexplorador
 
Registrado: agosto 2006
Ubicación: Quito, Ecuador
Mensajes: 298

Predeterminado Re: ¿Cómo hacer ping mediante código PHP?

Me salió este error:

Fatal error: Call to undefined function socket_create() in C:\wamp\www\Ping\ping_softonic.php on line 7

La línea 7 es la que dice:

Código PHP:
$socket socket_create(AF_INETSOCK_RAW1); 
cyberexplorador is offline   Citar y responder
Página 1 de 2 | 1 | 2 | >

« CSS elementos flotantes [problema] | Programacion en C.Ayuda cn un bucle »

Herramientas
Estilo


 

Tema Iniciado por Foro Respuestas Último mensaje
Tutorial: ¿como hacer una carcasa transparente para ordenador? w123 Documentación 14 22 ago 2010 19:50
¿Cómo hacer mi propio blog? erchonydecai Comunicación 6 02 sep 2006 00:15
Truco de Excel: ¿Cómo hacer un cuadro de busqueda para tus datos? maxert Documentación 1 13 oct 2005 14:43
¿Como hacer publicida de mi web? f1alonso.com Internet 4 22 may 2005 06:02
como empiezo con php? para hacer unos foros miguelws Internet 12 10 abr 2005 04:48



Buscar