Foros del Web » Programando para Internet » PHP »

Fatal error: Maximum execution time of 30 seconds exceeded

Estas en el tema de Fatal error: Maximum execution time of 30 seconds exceeded en el foro de PHP en Foros del Web. Hay alguna forma de evitar este error? Fatal error: Maximum execution time of 30 seconds exceeded in c:\blablabla\masblabla\..... on line ..... ¿ es un limite ...
  #1 (permalink)  
Antiguo 28/02/2004, 18:28
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
Fatal error: Maximum execution time of 30 seconds exceeded

Hay alguna forma de evitar este error?

Fatal error: Maximum execution time of 30 seconds exceeded in c:\blablabla\masblabla\..... on line .....

¿ es un limite a cumplir?
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}
  #2 (permalink)  
Antiguo 28/02/2004, 18:53
 
Fecha de Ingreso: agosto-2003
Ubicación: España
Mensajes: 202
Antigüedad: 14 años, 4 meses
Puntos: 0
bueno, si no sabemos que has introducido en esa linea de codigo quizas no podremos ayudarte
  #3 (permalink)  
Antiguo 28/02/2004, 19:04
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
es un indexador, indexa directorios, si estos tienen muchos archivos la openracion dura mas de 30 segundos y muestra ese error de arriba.
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}
  #4 (permalink)  
Antiguo 28/02/2004, 19:31
 
Fecha de Ingreso: enero-2004
Mensajes: 144
Antigüedad: 13 años, 10 meses
Puntos: 0
una cosultilla...

que sistema operativo estas usando.????

yo sé q si usas windows 98 con apache, php y mysql te manda esos errores.

A mi me paso y tuve que usar el pws de windows y access
  #5 (permalink)  
Antiguo 28/02/2004, 23:08
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
Usuo WinMe, pero el script es para diferentes servidores casi todos Unix/Linux.
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}
  #6 (permalink)  
Antiguo 29/02/2004, 01:26
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Bueno eso NADA tiene que ver con el Sistema Operativo del servidor, sencillamente es un límite de tiempo máximo de ejecución que se establece en el PHP.INI, y que usualmente se pone en 30 segundos.

Lo que puede estar sucedirndo es que algun script puede estarse llevando mas tiempo en ejecutarse debido a una gran carga de información a procesar.

Si crees que tu script no debiera presentar esos errores, tal vez tengas algun WHILE o FOR que se está ejecutando infinitamente. Revisa la sintaxis de tus bucles y cuida no estar asignando (=) donde corresponda una comparación (==)... por ejemplo:

for ($i=1;$i=10;$i++) {
//rutina
}

Ese bucle se ejecutará infinitamente, pues la segunda condición debería haber sido, por ejemplo $i>=10

__________________
Manoloweb
  #7 (permalink)  
Antiguo 29/02/2004, 01:28
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Por cierto, no te dejes llevar por modificar el Maximum execution time usando ini_set() pues esa directriz debe venir ANTES de que el script comience a ejecutarse, como mucho podrás setearlo desde el .htaccess

__________________
Manoloweb
  #8 (permalink)  
Antiguo 29/02/2004, 04:03
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
Si debe ser como dices, pero yo veo el codigo igual como tu ejemplo, te pongo la funcion aqui:

Código PHP:
function boolean() {

    global 
$query_arr$querymode$stype;
    global 
$res$allres$rescount;


if (
count($query_arr) == 1) {
    foreach (
$allres[0] as $k => $v) {
        if (
$k) {
            
$res .= pack("N",$k);
        }
    }
    
$rescount intval(strlen($res)/4);
    unset(
$allres);
    return;
} else {

    if (
$stype == "AND") {
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$querymode[$i] == 2) {
                
$min $i;
                break;
            }
        }
        for (
$i=$min+1$i<count($query_arr); $i++) {
            if (
count($allres[$i]) < count($allres[$min]) && $querymode[$i] == 2) {
                
$min $i;
            }
        }
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$i == $min) {
                continue;
            }
            if (
$querymode[$i] == 2) {
                foreach (
$allres[$min] as $k => $v) {
                    if (
array_key_exists($k,$allres[$i])) {
                    } else {
                        unset(
$allres[$min][$k]);
                    }
                }
            } else {
                foreach (
$allres[$min] as $k => $v) {
                    if (
array_key_exists($k,$allres[$i])) {
                        unset(
$allres[$min][$k]);
                    }
                }
            }
        }
        foreach (
$allres[$min] as $k => $v) {
            if (
$k) {
                
$res .= pack("N",$k);
            }
        }
        
$rescount intval(strlen($res)/4);
        return;
    }
    
    
    if (
$stype == "OR") {
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$querymode[$i] != 1) {
                
$max $i;
                break;
            }
        }
        for (
$i=$max+1$i<count($query_arr); $i++) {
            if (
count($allres[$i]) > count($allres[$max]) && $querymode[$i] != 1) {
                
$max $i;
            }
        }
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$i == $max) {
                continue;
            }
            if (
$querymode[$i] != 1) {
                foreach (
$allres[$i] as $k => $v) {
                    
$allres[$max][$k] = 1;
                }
            } else {
                foreach (
$allres[$i] as $k => $v) {
                    if (
array_key_exists($k,$allres[$max])) {
                        unset(
$allres[$max][$k]);
                    }
                }
            }
        }
        foreach (
$allres[$max] as $k => $v) {
            if (
$k) {
                
$res .= pack("N",$k);
            }
        }
        
$rescount intval(strlen($res)/4);
        return;
    }
    
}


Se que puse codigo de mas, pero puedes notar la funcion.
En fin el script necita mucho mas de 30 segundos.
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}
  #9 (permalink)  
Antiguo 29/02/2004, 14:23
 
Fecha de Ingreso: enero-2004
Mensajes: 144
Antigüedad: 13 años, 10 meses
Puntos: 0
sobre el sistema operativo

quizás en el código haya un for o while infinito que este provocando ese "tiempo máximo de ejecución", pero sé (por experiencia propia y de muchos colegas) que windows 98 genera ese error al usar apache, php y mysql, independiente del script.

No sé cual es la causa pero es así.
  #10 (permalink)  
Antiguo 29/02/2004, 14:42
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Cita:
Se que puse codigo de mas, pero puedes notar la funcion.
En fin el script necita mucho mas de 30 segundos.
En ese caso deberás modificar tu INI o tu .htaccess e indicar cuanto tiempo es el que necesitas...

__________________
Manoloweb
  #11 (permalink)  
Antiguo 01/03/2004, 13:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con la función set_time_limit() también puedes ajustar el tiempo de ejecución de tu script para aumentarlo a los 30 segundos por defecto de PHP.

Esa función la puedes usar en tus scripts individuales que requieran más tiempo de ejecución sin necesidad de forzar por completo la configuración de php.ini para todo script que se ejecute o la de todos los scripts de ese directorio/sub-ramas como sería por un .htaccess y forzaondo php_flag o php_value ...

Un valor de 0 para set_time_limit() sería equivalente a "tarde lo que tarde el script en ejecutarse" .. Cuidado con esos ajustes. Siempre es recomendable usar tiempos largos a "infinito" para no dejar "colgado" el servidor si llegase el caso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 01/03/2004, 13:58
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Solo ten cuidado:

Cita:
set_time_limit() has no effect when PHP is running in safe mode. There is no workaround other than turning off safe mode or changing the time limit in the php.ini.
Si tu hosting corre en safe mode, no podrás usar esta función. Revisalo con tu hosting antes de depender de ella para alguna función crítica de tu web.



Saludos Cluster! Long Time no see!!!
__________________
Manoloweb
  #13 (permalink)  
Antiguo 02/03/2004, 06:01
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
Código PHP:
function boolean() {

    global 
$query_arr$querymode$stype;
    global 
$res$allres$rescount;


if (
count($query_arr) == 1) {
    foreach (
$allres[0] as $k => $v) {
        if (
$k) {
            
$res .= pack("N",$k);
        }
    }
    
$rescount intval(strlen($res)/4);
    unset(
$allres);
    return;
} else {

    if (
$stype == "AND") {
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$querymode[$i] == 2) {
                
$min $i;
                break;
            }
        }
        for (
$i=$min+1$i<count($query_arr); $i++) {
            if (
count($allres[$i]) < count($allres[$min]) && $querymode[$i] == 2) {
                
$min $i;
            }
        }
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$i == $min) {
                continue;
            }
            if (
$querymode[$i] == 2) {
                foreach (
$allres[$min] as $k => $v) {
                    if (
array_key_exists($k,$allres[$i])) {
                    } else {
                        unset(
$allres[$min][$k]);
                    }
                }
            } else {
                foreach (
$allres[$min] as $k => $v) {
                    if (
array_key_exists($k,$allres[$i])) {
                        unset(
$allres[$min][$k]);
                    }
                }
            }
        }
        foreach (
$allres[$min] as $k => $v) {
            if (
$k) {
                
$res .= pack("N",$k);
            }
        }
        
$rescount intval(strlen($res)/4);
        return;
    }
    
    
    if (
$stype == "OR") {
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$querymode[$i] != 1) {
                
$max $i;
                break;
            }
        }
        for (
$i=$max+1$i<count($query_arr); $i++) {
            if (
count($allres[$i]) > count($allres[$max]) && $querymode[$i] != 1) {
                
$max $i;
                
            }
        }
        for (
$i=0$i<count($query_arr); $i++) {
            if (
$i == $max) {
                continue;
                
            }
            if (
$querymode[$i] != 1) {
                foreach (
$allres[$i] as $k => $v) {
                    
$allres[$max][$k] = 1;
                    
                }
            } else {
                foreach (
$allres[$i] as $k => $v) {
                    if (
array_key_exists($k,$allres[$max])) {
                        unset(
$allres[$max][$k]);
                        
                    }
                }
            }
        }
        foreach (
$allres[$max] as $k => $v) {
            if (
$k) {
                
$res .= pack("N",$k);
                
            }
        }
        
$rescount intval(strlen($res)/4);
        return;
        
    }
    
}



Tal ves lo este implementando mal pero el error persiste.
el safe modo esta off
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}
  #14 (permalink)  
Antiguo 02/03/2004, 07:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
DJ-MON

Si el safe mode está a OFF puedes usar la función set_time_limit() . .usala al principio de tu script que llame a esa función que es la que por los bucles que hay y demás tarda más de 30 segundos en ejecutarse.

set_time_limit(100);

Por ejemplo .. 100 segundos .. ahí vas a justando el tiempo que realmente requiere tu script, pero, sería bueno repasar la lógica del mismo y ver si hay más formas de optimizarlo ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 02/03/2004, 10:55
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
Gracias Cluster, pero asi lo he visto en php.net y asi no me funciona sigue apareciendo el error.

Tambien en php.net dice que solo esa opcion existe para este caso, .

AH SE ME OLVIDAVA MOM????????????? QUIEN ES DJ-MOM. JEJEJE.
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}

Última edición por DJ-Dom; 02/03/2004 a las 10:57
  #16 (permalink)  
Antiguo 02/03/2004, 11:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 114
Antigüedad: 14 años, 1 mes
Puntos: 0
mUCHAS GRACIAS A TODOS UN ERROR DE MI PARTE LO PUESE DEBAJO DE UNA CONDICIONAL.
Y ESTABA FALSE

GRacias.
__________________
Soporte y Creaciones PHP-Nuke:
NukeProjects.Net

if($Necesitas=="Ayuda"){
echo "No dudes en pedirla";
}
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:36.