Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/08/2003, 21:00
leonardop
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 10 meses
Puntos: 1
Hola,

Me intriga un poco el segmento de código que has publicado, ya que pareces confiar en el valor 1 como valor de éxito, y esto por lo general no sería una buena suposición.

¿Dices que $estado siempre vale cero porque de alguna forma depuras su valor explícitamente más adelante, o porque aprecias que siempre se incluye el archivo `offline.php'?

Si volvemos al código, notarás que la condición que en efecto produce que se incluya `offline.php' no es que $estado valga 0, sino que $estado valga diferente de 1. Y, en realidad, la función fsockopen() lo que devuelve es un descriptor de archivo en caso de haberse establecido una conexión exitosa, y éste puede representarse mediante un valor entero positivo cualquiera (no es que sea en realidad un valor tipo entero como tal).

Así que me parece que posiblemente lo que necesitas es cambiar un poco tu código de modo que no dependas de una condición como "$estado == 1", sino una condición que evalúe si $estado tiene un valor FALSE (en caso de fallo) o no. Por ejemplo:

Código:
<?php

$servidor = 'servidor';
$puerto   = 8000;
$timeout  = 30;

$estado = fsockopen ($servidor, $puerto ,$errno, $errstr, $timeout);

if (! $estado) {
    // Aqui podria mostrarse un mensaje de error, usando los valores
    // de $errno y $errstr

    include "offline.php";
} else {
    fclose ($estado);
    include "online.php";
}

?>

Un cordial saludo.