Foros del Web » Programando para Internet » PHP »

if timeout else?, posible?

Estas en el tema de if timeout else?, posible? en el foro de PHP en Foros del Web. Quería hacer un if que dependiendo del timeout muestre una cosa u otra. ejemplo: if( $timeout >= 3) { echo "0"; } else { echo ...
  #1 (permalink)  
Antiguo 17/06/2011, 10:07
Avatar de FaNaTyCk  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 2
Pregunta if timeout else?, posible?

Quería hacer un if que dependiendo del timeout muestre una cosa u otra.

ejemplo:

if( $timeout >= 3)
{
echo "0";
}
else
{
echo $mi_variable;
}

Se que el if esta mal, pero en realidad yo quiero mostrar mi variable, pero si supera el timeout de 3 segundos mostrar un 0 como resultado.

Como puedo hacer algo así?.

Saludos.
  #2 (permalink)  
Antiguo 17/06/2011, 10:10
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: if timeout else?, posible?

intenta explicar un poco mejor tu problema para poder ayudarte mejor..
por lo que explicas no es nada del otro mundo ...

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 17/06/2011, 10:10
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if timeout else?, posible?

que se supone que contiene como valor $timeout????
  #4 (permalink)  
Antiguo 17/06/2011, 10:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: if timeout else?, posible?

Podrías que en cada parte del código que deseas recorrer colocar una verificación de tiempo. Algo como
Código PHP:
Ver original
  1. $start = time();
  2.  
  3. // codigo de php
  4. // ...
  5.  
  6. if((time() - $start) > 3){
  7.     // código
  8.     exit;
  9. }
  10.  
  11. // más código
  12. // ...
  13.  
  14. if((time() - $start) > 3){
  15.     // código
  16.     exit;
  17. }
  18.  
  19. // mas código
  20. // ...
  21.  
  22. if((time() - $start) > 3){
  23.     // código
  24.     exit;
  25. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 17/06/2011, 10:34
Avatar de FaNaTyCk  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: if timeout else?, posible?

El valor $timeout es lo que necesito.

Probé lo que me dijo abimaelrc pero no dio resultados favorables.

y $my_variable, usa una clase, obtiene según los bits que comprueba un numero de usuarios conectados a una aplicación (software, no web, no base de datos). Si hay usuarios conectados a la aplicación en microsegundos me muestra los usuarios, caso contrario queda cargando el script hasta que se topa con el timeout 60 del php.

No se como modificar el clase http://pastebin.com/ENgKPz5z sino lo arreglaría directamente desde ahí, por eso intente hacer un if y dependiendo del timeout me muestre el resultado o me printee un 0 si supera el timeout establecido a 2 segundos.
  #6 (permalink)  
Antiguo 17/06/2011, 11:29
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if timeout else?, posible?

para vos que valor es timeout???????????
todavia no lo entiendo, asi aclaramos dudas
  #7 (permalink)  
Antiguo 17/06/2011, 11:44
Avatar de FaNaTyCk  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: if timeout else?, posible?

Cita:
Iniciado por Patriarka Ver Mensaje
para vos que valor es timeout???????????
todavia no lo entiendo, asi aclaramos dudas
Supongo que lo mismo que todos, el tiempo limite de espera para ejecutar el script.

Yo quiero que si supera los 2 segundos me muestre un 0, si tarda menos de 2 segundos es por que me va a mostrar el numero de usuarios conectados, lo cual tarda microsegundos en mostrar. El problema es cuando no detecta usuarios conectados se queda cargando hasta que le da timeout de php y no devuelve nada.

ahora?..
  #8 (permalink)  
Antiguo 17/06/2011, 11:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: if timeout else?, posible?

Si encuentra algo en microsegundos, así mismo debe hacer cuando no encuentra nada. Lo más probable es algo que estés haciendo en el query que esta manteniendo la conexión. Muestra lo que hayas hecho.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 17/06/2011, 12:02
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if timeout else?, posible?

"el tiempo limite de espera para ejecutar el script."

no lo habias mencionado desde el principio
  #10 (permalink)  
Antiguo 17/06/2011, 12:42
Avatar de FaNaTyCk  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: if timeout else?, posible?

Cita:
Iniciado por abimaelrc Ver Mensaje
Si encuentra algo en microsegundos, así mismo debe hacer cuando no encuentra nada. Lo más probable es algo que estés haciendo en el query que esta manteniendo la conexión. Muestra lo que hayas hecho.
Ahí deje la clase que estoy usando antes en un pastebin:
http://pastebin.com/ENgKPz5z

Como dije, no se modificarla dado que lee bits de la aplicación, no se si es con códigos HEX o qué, sino me evitaría hacer lo que intento hacer.


Cita:
Iniciado por Patriarka Ver Mensaje
"el tiempo limite de espera para ejecutar el script."

no lo habias mencionado desde el principio
Disculpa, no lo mencione por que el timeout es un elemento muy básico en php cuando recién estas comenzando. También existe el timeout de mysql, pero en este caso no uso base de datos.
  #11 (permalink)  
Antiguo 17/06/2011, 13:01
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if timeout else?, posible?

esta bien pero ya estaba cargado en una variable hizo todo confuso
  #12 (permalink)  
Antiguo 20/06/2011, 21:06
Avatar de FaNaTyCk  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: if timeout else?, posible?

Cita:
Iniciado por Patriarka Ver Mensaje
esta bien pero ya estaba cargado en una variable hizo todo confuso
Ahora que has atado todos los cabos, se te ocurre alguna solución a tí o a alguien?..

Mi código actual:

Código PHP:
error_reporting(0);
set_time_limit(2);

require(
"class.php"); 

$serverip "ip:puerto"// Ejemplo: 127.0.0.1:44405

$ip_port = array(
                
=> "".$serverip.""
                
);

$rand       rand(1count($ip_port));         
$getip_port explode(":"$ip_port[$rand]);    
$ip     = (empty($_POST["ip"]))   ? $getip_port[0] : $_POST["ip"];
$port   = (empty($_POST["port"])) ? $getip_port[1] : $_POST["port"];

$s = new serverinfo($ip$port);
$s->getServerData();
$s->getPlayerData();

echo 
$s->serverData['players']; 
class que uso (no es mía y no se modificarla tampoco):
Código PHP:
class serverinfo
{
    var 
$ip;
    var 
$port;
   
    var 
$fp;
    var 
$timeout;
   
    var 
$serverData;
    var 
$playerData;


    function 
serverinfo($ip$port$timeout 3)
    {
        
$this->ip       $ip;
        
$this->port     $port;
       
        
$this->fp       fsockopen("udp://" $ip$port);
        
$this->timeout  $timeout;
    }


    function 
getServerData()
    {
        
$this->writeData($this->getQuery("A2S_INFO"));
       
        
$this->getData("byte");
        
$this->getString();
        
$this->serverData['hostname']   = $this->getString();
        
$this->serverData['map']        = $this->getString();
        
$this->getString();
        
$this->serverData['mod']        = $this->getString();
        
$this->serverData['players']    = $this->getData("byte");
        
$this->serverData['maxplayers'] = $this->getData("byte");
        
$this->getData("byte");
        
$this->serverData['servertype'] = (chr($this->getData("byte")) == "d") ? "Dedicated" "Listen";
        
$this->serverData['server_os']  = (chr($this->getData("byte")) == "w") ? "Windows" "Linux";
        
$this->serverData['password']       = $this->getData("byte");
        
$this->getData("byte");
        
$this->getString();
        
$this->getString();
        
$this->getString();
        
$this->getData("long");
        
$this->getData("long");
        
$this->getData("byte");
        
$this->getData("byte");
        
$this->serverData['vac']        = $this->getData("byte");
        
$this->getData("byte");
    }
   
   
    function 
getPlayerData()
    {
        
$this->writeData($this->getQuery("A2S_PLAYER"));
       
        
fread($this->fp4);
        
$this->getData("byte");
       
        
$count $this->getData("byte");
       
        for(
$i 0$i $count$i++)
        {
            
$this->playerData[$i]['id']     = $this->getData("byte");
            
$this->playerData[$i]['name']   = $this->getString();
            
$this->playerData[$i]['frags']  = $this->getData("long");
            
$this->playerData[$i]['time']   = round($this->getData("float"));
        }
    }


    function 
getQuery($queryType)
    {
        switch(
$queryType)
        {
            case 
"A2S_SERVERQUERY_GETCHALLENGE":
                return 
"\xFF\xFF\xFF\xFF\x57";
                break;

            case 
"A2S_INFO":
                return 
"\xFF\xFF\xFF\xFFTSource Engine Query\x00";
                break;

            case 
"A2S_PLAYER":
                return 
sprintf("\xFF\xFF\xFF\xFFU%s"$this->getChallenge());
                break;
        }
    }


    function 
getChallenge()
    {
        
$this->writeData($this->getQuery("A2S_SERVERQUERY_GETCHALLENGE"));
       
        return 
substr(fread($this->fp16), 59);
    }


    function 
getData($type)
    {
        switch(
$type)
        {
            case 
"long":
                
$data unpack("L"fread($this->fp4));
                return 
$data[1];
                break;

            case 
"byte":
                return 
ord(fread($this->fp1));
                break;

            case 
"char":
                return 
fread($this->fp1);
                break;

            case 
"float":
                
$data unpack("F"fread($this->fp4));
                return 
$data[1];
                break;
        }
    }


    function 
getString()
    {
        
$string '';
        
$loop   TRUE;
       
        while(
$loop)
        {
            
$_fp $this->getData("char");

            if( 
ord($_fp) != )
            {
                
$string .= $_fp;
            }
            else { 
$loop FALSE; }
        }
       
        return 
$string;
    }


    function 
writeData($input)
    {
        if( !
$this->fp )
        {
            exit(
"Error: Couldn't connect to server.");
        }
        else {
            
fwrite($this->fp$input);
            
socket_set_timeout($this->fp$this->timeout);
        }
    }


    function 
setTimeFormat($format$input)
    {
        
$hours floor($input 3600);
        
$input $input 3600;

        
$minutes floor($input 60);
        
$input $input 60;

        
$seconds round($input);

        return 
sprintf($format$hours$minutes$seconds);
    }


    function 
sortPlayers($sort "time"$type "desc")
    {
        if(isset(
$this->playerData[0][$sort]))
        {
            for(
$i 0$i count($this->playerData); $i++)
            {
                
$temp[] = $this->playerData[$i][$sort];
            }

            switch(
$sort)
            {
                case 
"name":
                    
uasort($temp"strcasecmp");
                    break;
               
                default:
                    if(
$type == "desc") {
                        
arsort($temp);
                    }
                    elseif(
$type == "asc") {
                        
asort($temp);
                    }
                    break;
            }

            foreach(
$temp as $key => $value)
            {
                
$keys[] = $key;
            }

            foreach(
$keys AS $k => $v)
            {
                
$tempvar[$k]['id']     = $this->playerData[$v]['id'];
                
$tempvar[$k]['name']   = $this->playerData[$v]['name'];
                
$tempvar[$k]['frags']  = $this->playerData[$v]['frags'];
                
$tempvar[$k]['time']   = $this->playerData[$v]['time'];
            }

            
$this->playerData $tempvar;
        }
    }

  #13 (permalink)  
Antiguo 23/06/2011, 07:36
Avatar de FaNaTyCk  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: if timeout else?, posible?

Sorry, pensé que era el botón editar y me sito la misma respuesta que di antes :/
  #14 (permalink)  
Antiguo 23/06/2011, 08:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if timeout else?, posible?

hace una cosa mas simple:
crea dos variables microtime(true) para el inicio y fin de la ejecucion, entonces:

$inicio=microtme(true);
$fin=microtme(true);
en algun momento de tu script tenes que compararlos:
$diferencia=$inicio-$fin; //o al reves
if($diferencia > 3){ //segundos
echo 'va lento che!';
}

Etiquetas: posible, timeout
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 20:29.