2011-12-04 16 views
5

Tengo un guión donde he puesto:set_time_limit (0) y el "tiempo máximo de ejecución" PHP

set_time_limit(0) 

pero aún así obtener

Fatal error: Maximum execution time of 90 seconds exceeded in /home/Feed.php on line 234 

También he intentado establecer:

php_value max_execution_time 120 

en el archivo .htaccess, pero todavía no se puede detener este error - ¿Alguna idea de por qué esto no se anula?

+3

¿Su servidor invalida su anulación ?, si coloca 'set_time_limit (0)' dentro del ciclo, restablecerá el tiempo a 0 en cada iteración. –

+1

@LawrenceCherone ¿estás seguro? –

+1

Solo para dejarme saber que este 'set_time_limit (XX)' resolvió mi problema. Quizás diferentes hosts tengan diferentes reglas/configuraciones. El 'php_value max_execution_time XX' no funcionó. – nobug

Respuesta

5

Lo más probable es que su host ejecute una copia de PHP con el parche Suhoshin instalado. Este parche proporciona una gran cantidad de mejoras operacionales y de seguridad para PHP, lo que incluye permitir que el host deshabilite funciones como set_time_limit().

Hay otras maneras en que un host puede deshabilitar la función set_time_limit(), pero eso es lo más probable. (especialmente porque ya ha descartado el modo seguro)

¿Por qué deshabilitarían esta función? Debido a que una función PHP que tarda mucho tiempo en ejecutarse también suele requerir muchos recursos del servidor; en un entorno de alojamiento compartido, es aconsejable que el anfitrión mitigue este tipo de cosas para evitar que un script fraudulento afecte a otros usuarios.

¿Qué puedes hacer al respecto?

En primer lugar, ¿está seguro de que necesita establecer el límite de tiempo? ¿Sabes por qué tu script tarda tanto tiempo en ejecutarse? ¿Puedes evitarlo? Quizás hacer un poco de perfil en su código podría ayudarlo a encontrar los cuellos de botella y acelerar el programa.

Como alternativa, si realmente necesita establecer el límite de tiempo, es posible que deba solicitarle a su host que lo habilite, o bien actualizar su paquete o cambiar de proveedor de alojamiento.

3

Esta función no tiene ningún efecto cuando PHP se ejecuta en modo seguro. No hay ninguna solución que no sea desactivar el modo seguro o cambiar el límite de tiempo en el php.ini

+0

No se está ejecutando en modo seguro –

0

Si está seguro de que no se está ejecutando en modo seguro ...

http://php.net/manual/en/function.set-time-limit.php

"Cuando llamado, set_time_limit() reinicia el contador de tiempo de espera desde cero. "

Así que podría, teóricamente, call set_time_limit(0) repetidamente.

Sin embargo, es posible que su proveedor de alojamiento para evitar que a través de modo seguro, etc.

Honestamente, yo sólo iba a tratar de conseguir un VPS barato donde controlas las cosas si necesita personalizar ese tipo de cosa.

+1

El manual decía que "Si se establece en cero, no se impone ningún límite de tiempo". – xdazz

+0

Sí.Pero el punto es que establecerlo en 0 no es suficiente para él, aparentemente. Entonces usarlo para restablecer el contador puede ser viable. Nunca intenté abusar de esa manera, pero supuestamente funciona. – ReadWriteCode

Cuestiones relacionadas