Foros del Web » Programando para Internet » PHP »

Respuesta de sitio web

Estas en el tema de Respuesta de sitio web en el foro de PHP en Foros del Web. Hola, quisiera saber si es posible con PHP obtener una respuesta de una direccion ip o sitio web para determinar si esta online o caido, ...
  #1 (permalink)  
Antiguo 17/07/2006, 22:23
Avatar de Po5i  
Fecha de Ingreso: julio-2004
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta de sitio web

Hola, quisiera saber si es posible con PHP obtener una respuesta de una direccion ip o sitio web para determinar si esta online o caido, una especie de ping

Gracias
  #2 (permalink)  
Antiguo 18/07/2006, 07:55
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 17 años, 11 meses
Puntos: 3
Hola

si haz de querer algo así como usuarios en línea quizas esto te sirva de algo

Pon estas Líneas donde quieres que se visualizen los usuarios online
Código PHP:
include( "class.online.php" );
$enlinea = new Usuariosenlinea ();
$enlinea -> enlinea (); 
archivo class.online.php
Código PHP:
<?php
class Usuariosenlinea
{
/*
     * @param string $servidor el host para conectar, usualmente localhost
     * @param string $basededatos el nombre de la base de datos
     * @param string $nombredb el nombre de la tabla, preferentemente no editar
     * @param string $usuario usuario de la base de datos
     * @param string $pass la contraseña de la base de datos
*/

   
var $servidor 'server' ;
   var 
$basededatos 'BD' ;
   var 
$nombredb 'tabla' ;
   var 
$usuario 'user' ;
   var 
$pass 'password';
## Fin de Conexion ##

var $e_rror ;
//Segundos para borrar de la base de datos a los usuarios inactivos
var $segundos 120;
   var 
$ahora ;

//CONSTRUCTOR
function Usuariosenlinea () {
$this -> recargar ();

     }   
function 
cuantos () {

     return 
$this -> ahora ;

     }

     function 
enlinea () {

         if( 
$this -> ahora == ) {
     echo 
$this -> ahora " Usuarios en linea" ;
         }
         else
         {
     echo 
$this -> ahora " Usuarios en linea" ;
         }

     }

         function 
ipreal (){

             if ( 
$real_ip getenv 'HTTP_X_FORWARDED_FOR' )){

$explode_real_ip explode "," $real_ip );
                 return 
trim $explode_real_ip ]);
             }
             else
             {
             return 
getenv 'REMOTE_ADDR' );
             }
         }
         function 
error (){

         return 
$this -> e_rror mysql_error ();
         }
         function 
recargar () {

$tiempo_actual time ();
$tiempo_final $tiempo_actual $this -> segundos ;
$ip $this -> ipreal ();

         @ 
mysql_connect $this -> servidor $this -> usuario $this -> pass )

         or die( 
'Error al Intentar Conectar con la base de datos ' $this -> error (). '' );
         @ 
mysql_select_db $this -> basededatos )

         or die( 
'Error Seleccionando la base de datos ' $this -> error (). '' );

$result mysql_query "SELECT ip FROM $this->nombredb WHERE ip='$ip'" )
         or die( 
'Error de lectura en la base de datos ' $this -> error (). '' );

         if( 
mysql_num_rows $result ) == ){

mysql_query "INSERT INTO $this->nombredb VALUES ('$tiempo_actual','$ip','$_SERVER[REQUEST_URI]')" )
         or die( 
'Error al Insertar en la base de datos ' $this -> error (). '' );
        }
         else

         {         
mysql_query "UPDATE $this->nombredb SET timestamp='$tiempo_actual' where ip='$ip'" )
         or die( 
'Error al Insertar en la base de datos ' $this -> error (). '' );
         }

mysql_query "DELETE FROM $this->nombredb WHERE timestamp < $tiempo_final" )
         or die( 
'Error al intentar borrar en la base de datos ' $this -> error (). '' );

$result mysql_query "SELECT ip FROM $this->nombredb" )
         or die( 
'Error de lectura en la base de datos ' $this -> error (). '' );

$this -> ahora mysql_num_rows $result );
mysql_close ();
         }
}
?>
Tabla
Código:
CREATE TABLE `usuariosenlinea` (
  `timestamp` int(15) NOT NULL default '0',
  `ip` varchar(40) NOT NULL default '',
  `location` varchar(100) NOT NULL default '',
  KEY `timestamp` (`timestamp`),
  KEY `ip` (`ip`),
  KEY `location` (`location`)
) TYPE=MyISAM;
espero que esto te sirva de algo
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #3 (permalink)  
Antiguo 18/07/2006, 08:14
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Lo que puedes hacer es tratar de conectarte al sitio mediante una función como fsockopen().
Código PHP:
$sitio 'www.forosdelweb.com';
$puerto 80;
$espera 20;

$online = @fsockopen($sitio$puerto, &$errno, &$errstr$espera);
if(
$online){
    
// está online
}else{
    
// Tardó más de $espera segundos en responder... se asume offline

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:14.