Error fatal: tiempo de ejecución máximo de 30 segundos excedido

397

Estoy descargando un archivo JSON de una fuente en línea y, cuando se ejecuta a través del bucle, recibo este error:

Error fatal: tiempo de ejecución máximo de 30 segundos excedido en C: \ wamp \ www \ temp \ fetch.php en la línea 24

Harsha MV
fuente
11
posible duplicado del tiempo máximo de ejecución de 60 segundos excedido, que ya es un duplicado de otros tres. Utilice la función de búsqueda antes de preguntar.
Gordon
"La función set_time_limit () y la directiva de configuración max_execution_time solo afectan el tiempo de ejecución de la secuencia de comandos en sí. Cualquier tiempo dedicado a la actividad que ocurre fuera de la ejecución de la secuencia de comandos, como llamadas al sistema usando system (), operaciones de flujo, consultas de bases de datos, etc. . no se incluye al determinar el tiempo máximo que el script ha estado ejecutándose. Esto no es cierto en Windows "De la documentación de PHP
Jacob Sánchez

Respuestas:

722

Tu circuito puede ser interminable. Si no es así, puede extender el tiempo máximo de ejecución de esta manera:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

y

set_time_limit(300);

se puede usar para extender temporalmente el límite de tiempo.

Michiel Pater
fuente
95
set_time_limit (300) se puede usar para extender temporalmente el límite de tiempo.
Omn
¿Está configurado solo para ese script o afectará a todos los otros scripts ejecutados después de este en el mismo servidor?
Rao
1
@Rao sí, esto será solo para ese script. Para hacerlo para todos los scripts, debe cambiarlo en el archivo php.ini. también puedes hacer set_time_limit (0); si desea que el script se ejecute para siempre o durante mucho tiempo
Haseeb
31
ini_set ('max_execution_time', 0); // sin límite
Junaid Atari
3
@sangam Yo diría que es una buena práctica, mantener este límite lo más bajo posible mientras se permite una cierta cantidad de búfer adicional. Por razones de seguridad, no quisiera apagarlo por completo. Se debe establecer razonable. De hecho, lo configuré en dos veces la cantidad de tiempo que tarda mi script de ejecución más larga en completarse en un nivel medio de estrés del servidor. Aún así, siempre podría fallar. Por lo tanto, la mejor práctica también es tratar los problemas de tiempo de espera para los scripts que requieren mucho tiempo por separado.
Hafenkranich
185

Tuve el mismo problema y lo resolví cambiando el valor para el parámetro max_execution_timeen php.ini, así:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

Espero que esto te pueda ayudar.

Güilber J. Castillo
fuente
1
Por alguna razón, ini_set no funciona, ¡pero eso es seguro!
gabrjan
php.inise puede encontrar en /etc/php5/apache2/php.ini.... Estoy usando ubuntu 13.04 ...
Enissay
Tuve el mismo problema al instalar moodle en wamp pero resolví la configuración del archivo php.ini
Muhammad Irfan
1
Es necesario reiniciar Apache después del cambio en php.ini
spideringweb
[php7] - sudo nano /etc/php/7.0/apache2/php.ini
Chris Lambrou
46

Todas las respuestas anteriores son correctas, pero en algunos casos utilizo una forma simple de evitarlo.

Simplemente ponga este comando al comienzo de su script:

set_time_limit(0);
Massa
fuente
99
Esto no se recomienda en absoluto
soy la persona más estúpida
1
El límite de tiempo desactivado no protege contra bucles infinitos, por lo que siempre debe establecer un límite (mayor).
bimlas
@IamtheMostStupidPerson ¿Por qué no? Si lo usas como localhost
Fernando Torres
23

Me encontré con este problema al actualizar a WordPress 4.0 . Por defecto, WordPress limita el tiempo máximo de ejecución a 30 segundos.

Agregue el siguiente código a su archivo .htaccess en su directorio raíz de su instalación de WordPress para anular el valor predeterminado.

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes
Fahim Hossain
fuente
18

Editar php.ini

Encuentra esta línea:

max_execution_time

Cambia su valor a 300:

max_execution_time = 300

300 significa 5 minutos de tiempo de ejecución para la solicitud http.

Jamil Ahmed
fuente
16

Tu guión se está agotando. Eche un vistazo a la función set_time_limit () para aumentar el tiempo de ejecución. O perfile el script para que se ejecute más rápido :)

tlenss
fuente
1
@HarshaMV Se refiere a utilizar un perfil de rendimiento para determinar por qué el script es lento al principio y optimizar su código para mejorar el tiempo de ejecución. Esto puede o no ser útil, dependiendo de cuál sea el cuello de botella (CPU vs. E / S de disco vs. Red).
Dan Bechard
12

si todo lo anterior no funcionó para usted, agregue un .htaccessarchivo al directorio donde se encuentra su script y póngalo dentro

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

esta fue la forma en que resolví mi problema, ini_set('max_execution_time', 86400);ni lo set_time_limit(86400)resolví, pero el método .htaccess sí.

Nassim
fuente
1
Funciona en mi caso. Gracias. Reemplace M con G para GB
Web_Developer
11

Podemos resolver este problema de 3 maneras diferentes.

1) Usando el archivo php.ini

2) Usando el archivo .htaccess

3) Usando el archivo Wp-config.php (para Wordpress)

KarSho
fuente
8

Puede eliminar la restricción configurándola a cero agregando esta línea en la parte superior de su script:

<?php ini_set('max_execution_time', 0); ?>
Mwangi Thiga
fuente
7

Sigue el camino /etc/php5(your php version)/apache2/php.ini.

Ábralo y establezca el valor max_execution_timeen uno deseado.

Suchit kumar
fuente
En ciertos proveedores de alojamiento, es posible que deba configurar /home/[usernamefont>/.php/7.0/phprc
expertCode
7

Tal vez verifique cualquier cosa que haya cambiado en el archivo php.ini. Por ejemplo, cambié el "; intl.default_locale =" a "; intl.default_locale = en_utf8" para habilitar la "Extensión de internacionalización (Intl)" sin agregar el "extension = php_intl.dll", entonces ocurrió el mismo error. Por lo tanto, sugiero verificar errores similares.

Mike G
fuente
5

Aumente el tiempo de ejecución de su script agregando la siguiente línea en la parte superior del script PHP.

ini_set('max_execution_time', 120); //120 seconds = 2 minutes

La referencia ha tomado de Increase the PHP Script Execution Time

JoyGuru
fuente
5

Para extender su max_execution_timepuede usar cualquiera ini_seto set_time_limit.

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);

!! Pero tenga en cuenta que, ambas funciones se reinicia también contando el tiempo que la secuencia de comandos ya ha tardado en ejecutarse

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//

así que si desea establecer la cantidad máxima exacta de tiempo que el script puede ejecutarse, su comando debe ser el primero.

Las diferencias entre esas dos funciones son

  • set_time_limit no devuelve información si fue exitosa pero arrojará una advertencia por error.
  • ini_setdevuelve el valor anterior en caso de éxito o falso en caso de error sin advertencia / error
Buksy
fuente
5

Puedes hacerlo fácilmente con WHM. Solo tengo que:

WHM -> Configuración del servicio -> Configuración de PHP

editor-> max_execution_time=30

(30 es el valor predeterminado, cámbielo a cualquier valor que desee)

payal
fuente
2

Tengo el mismo problema en el sitio de WordPress, agregué el archivo .htaccess y luego funcionó bien para mí.

php_value max_execution_time 6000000
Ankit K Gupta
fuente
0

He realizado algunos cambios en mi caso en: xampp \ phpMyAdmin \ bibliotecas \ config.default.php

He buscado: $cfg['ExecTimeLimit'] y cambiar el valor en el lado derecho ...

Puede cambiar el valor de la mano derecha a cualquier valor superior, como '5000'. y funciona.

Imad Ullah
fuente