2011-02-02 29 views
17

Mi secuencia de comandos compara 2 árboles fuente, crea un mapa de posibles archivos modificados, compara hashes MD5 y crea un paquete de diferencias.Error fatal: el tiempo máximo de ejecución de 0 segundos superó

Después 28000-29000 archivos, PHP termina la secuencia de comandos con el error:

Fatal error: Maximum execution time of 0 seconds exceeded in /root/_PACKER-TESTER/core/diff.class.php on line 67 (standard in_array() call)

ya he tratado de establecer max_input_time de alto valor (o cero) - nada.

Configuración max_execution_time a 99999999999999 no hacer nada ... el mismo error.

+0

Su 999..999 límite de tiempo viene a ser de un número de 47 bits, muy por encima de PHP Límite de 32 bits –

+0

¿Se está ejecutando en SafeMode? ([docs for set_time_limit] (http://us.php.net/set_time_limit)) ... – ircmaxell

+0

Marc B - Para esta publicación solo presiono 9 muchas veces sin contar cuántos :) Ofkz en el código I no supera los 32 bits :) – kiler129

Respuesta

9

Problema resuelto, php acumulación con litespeed api (lsapi) tiene env variables extra para determinar máximo momento de la ejecución - LSAPI_MAX_PROCESS_TIME (el valor predeterminado es 300 segundos).

+0

marque su propia respuesta como aceptada para ayudar a otros. y creo que sería genial si agregaste el entorno CLI a tus etiquetas/preguntas. –

+0

está predeterminado en 300, pero ¿se configuró en cero? – horatio

+1

MAX_PROCESS_TIME difiere del límite de tiempo establecido por php. El tiempo máximo de proceso ha sido agregado por litespeed tech para evitar secuencias de comandos malignas que se repiten durante meses sin hacer nada [set_time_limit() es el tiempo de la CPU, no el tiempo real]. LSAPI desencadena el mecanismo interno de expiración de php, lo revelé a la tecnología LiteSpeed. Entonces, las variables de env de LSAPI_ * tienen mayor prioridad que los valores de php: es muy bueno en entornos compartidos, el usuario no puede ejecutar guiones por encima de los límites globales a menos que obtenga el archivo de configuración LiteSpeed ​​Web Server o el panel web :) – kiler129

0

Trate set_time_limit() y el registro phpinfo() si usted es capaz de establecer el límite de tiempo:

set_time_limit(60*60);phpinfo();exit; 
+0

set_time_limit() doesnt parece ayudar. Estoy ejecutando script desde la consola en el servidor dedicado (I'm root). – kiler129

+0

Este límite no está vigente en CLI. – Mchl

+0

No sabía que ... – Marc

19

Pruebe la configuración max_input_time = -1 en php.ini, o usando set_time_limit(-1). Eso funcionó para mí sin reconstruir PHP.

This article lo explica muy bien.

+3

Funcionó como un encanto, tuve el mismo error y configuración max_input_time = -1 hizo el trabajo.Gracias – amertkara

+0

No tiene que funcionar - LSAPI_ * tiene más prioridad que php.ini - el administrador puede dar acceso de usuario a algunas opciones de php.ini sin riesgo debido a la limitación implementada por LSAPI. – kiler129

+0

Solo quería agregar que parece que establecer '0' o' -1' tendrá el mismo efecto. Gracias por esto, fue necesario actualizar 'max_input_time' (el uso de' set_time_limit' en el código no cambió nada, ya que parece estar relacionado con 'max_execution_time', que ya estaba configurado en' 0' para mí). El mensaje de error parece mostrar lo que 'max_execution_time' está configurado a pesar de que en realidad es la configuración' max_input_time' que está activando el tiempo de espera. PHP 5.5.9 en ubuntu 14.04 – Programster

0

He encontrado que el "tiempo máximo de ejecución de 0 segundos excedido" puede deberse a que el código ingrese en un ciclo infinito.

Por ejemplo:

while (true) { ... } 

causas de este error para mí.

Si no es una variable de entorno (como se mencionó anteriormente) Me gustaría examinar lo que está en el número de línea reportado por php con el error

Cuestiones relacionadas