Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/04/2014, 15:19
Daklon_15
 
Fecha de Ingreso: septiembre-2013
Mensajes: 11
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: mysql_fetch_row cuelga script sin mensaje de error

Gracias por responder,

Lo primero no creo que sea, el script antes de esta modificación funcionaba perfectamente, nunca se colgaba y lo dejé funcionando horas, de todas formas.. ¿hay alguna forma de saber si es por esto?

la segunda opción.. ¿como puedo descartarla?

No me deja pegar todo el código... el mensaje resultante es demasiado largo... les pego todo el "código nuevo", está todo dentro de un if y el problema lo da exclusivamente al entrar en ese if, si no se cumple la condición el bucle se ejecuta sin problemas

Código PHP:
if($mov_pend["tipo"] == && $mov_pend["horavuelta"] == NULL){
        echo 
"ejecuto if1";
        
//consulto el nombre del planeta y su dueño
        
$query_datos_exploracion1 mysql_query('SELECT nombre, dueno FROM mapa WHERE id=\''.$mov_pend["planetadestino"].'\'') or die(mysql_error());
        
$datos_exploracion1 mysql_fetch_row($query_datos_exploracion1) or die(mysql_error());
        
//consulto las existencias de tropas del planeta
        
$query_datos_exploracion2 mysql_query('SELECT * FROM existencias_tropas WHERE planetaactual=\''.$mov_pend["planetadestino"].'\'') or die(mysql_error());
        
$datos_exploracion2 mysql_fetch_row($query_datos_exploracion2) or die(mysql_error());
        
//consulto las existencias de naves del planeta
        
echo 'SELECT * FROM existencias_naves WHERE planetaactual=\''.$mov_pend["planetadestino"].'\'';
        
$query_datos_exploracion3 mysql_query('SELECT * FROM existencias_naves WHERE planetaactual=\''.$mov_pend["planetadestino"].'\'') or die(mysql_error());
                echo 
$query_datos_exploracion3;
        
$datos_exploracion3 mysql_fetch_array($query_datos_exploracion3) or die(mysql_error());
                echo 
"ejecuto fetch3";
        
//consulto las existencias de defensas del planeta
        
$query_datos_exploracion4 mysql_query('SELECT * FROM existencias_defensas WHERE planetaactual=\''.$mov_pend["planetadestino"].'\'') or die(mysql_error());
        
$datos_exploracion4 mysql_fetch_row($query_datos_exploracion4) or die(mysql_error());
        
//consulto los movimientos pendientes para ver si ha llegado algún despliegue(de momento solo despliegue de tropas, falta despliegues de naves)
        
$query_datos_exploracion5 mysql_query('SELECT * FROM mov_pend WHERE planetadestino=\''.$mov_pend["planetadestino"].'\' AND cancelado=\'0\' AND horallegada<=\''.time().'\' AND tipo=\'1\'') or die(mysql_error());
        
$datos_exploracion5 mysql_fetch_row($query_datos_exploracion5) or die(mysql_error());
        echo 
"antes de mensaje";
        
//proceso los datos
        
$mensaje"Nombre del Planeta:".$datos_exploracion1[0]."    Dueño:".$datos_exploracion1[1]."<br>";
        echo 
"antes de los if";
        
//proceso las tropasls
        
if($datos_exploracion2[0] != NULL){
            echo 
"ejecuto if2";
            
$mensaje $mensaje."TROPAS:<br>";
            
$columnas array_keys($datos_exploracion2);
            
// ATENCION: cambiar este for si se cambia el numero de entradas de la base de datos(esto hay que mejorarlo)
            
for($i 3$i <= 20 ;$i++){
                if(
$datos_exploracion2[$i] != NULL){
                    
$mensaje $mensaje.$columnas[($i*2)+1]."=".$datos_exploracion2[$i]."<br>";
                }
            }
            
        }
        
//proceso las naves
            
if($datos_exploracion3[0] != NULL){
            
$mensaje $mensaje."NAVES:<br>";
            
$columnas array_keys($datos_exploracion3);
            
// ATENCION: cambiar este for si se cambia el numero de entradas de la base de datos(esto hay que mejorarlo)
            
for($i 3$i <= 24 ;$i++){
                if(
$datos_exploracion3[$i] != NULL){
                    
$mensaje $mensaje.$columnas[($i*2)+1]."=".$datos_exploracion3[$i]."<br>";
                }
            }
        }
        
//proceso las defensas
            
if($datos_exploracion4[0] != NULL){
            
$mensaje $mensaje."DEFENSAS:<br>";
            
$columnas array_keys($datos_exploracion4);
            
// ATENCION: cambiar este for si se cambia el numero de entradas de la base de datos(esto hay que mejorarlo)
            
for($i 3$i <= 14 ;$i++){
                if(
$datos_exploracion4[$i] != NULL){
                    
$mensaje $mensaje.$columnas[($i*2)+1]."=".$datos_exploracion4[$i]."<br>";
                }
            }
        }
        echo 
"preparo envio mensaje";
        
//envio el mensaje
        
mysql_query('INSERT INTO mensajes (de, para, hora, asunto, mensaje) VALUES (\'Sistema\',\''.$mov_pend["jugador"].'\', \''.time().'\', \'Exploración de:'.$datos_exploracion1[0].'\', \''.$mensaje.'\')') or die(mysql_error());
        echo 
"envio mensaje";
        
        
//pongo a las tropas exploradoras de vuelta(60 segundos fijos porque todas las tropas tardan eso)
        
mysql_query('UPDATE mov_pend SET horavuelta=\''.(time() + 60).'\'') or die(mysql_error());
        continue;
        
    } 
EDIT: he googleado un poco y usando este código:

Código PHP:
echo memory_get_usage()."/";
    echo 
memory_get_peak_usage(); 
al principio del primer if y justo antes del error, obtengo estos resultados:
1317128/319368


321688/323800

Lo del tiempo de espera.. segun la web oficial de php, al ser por consola no hay límite (en web si que lo hay, de 30 segundos)

Última edición por Daklon_15; 08/04/2014 a las 16:55