A veces recibo el mensaje «Maximum execution time exceeded»

En el original en francés, XXX e YYY son Free y Online. Haría falta saber si este problema se produce en alojamientos web más utilizados en el mundo hispano...

Para evitar que un error de programación en los scripts PHP bloquee el funcionamiento del servidor, los proveedores de alojamiento fijan un tiempo máximo para la ejecución de cada página en PHP. Este límite está fijado generalmente en 30 segundos: si una página «sale» con un cálculo que lleva más de 30 segundos (un cálculo enorme, o un bucle infinito), el servidor interrumpe el cálculo y lo indica mediante un mensaje de error. Para SPIP, este límite de 30 segundos es ampliamente suficiente para efectuar todos sus cálculos.

Ciertos proveedores fijan no obstante duraciones máximas muy cortas. Este es notablemente el caso de Free (15 segundos) y de Online (8 segundos). Además, en estos proveedores, la memoria asignada al funcionamiento de PHP es bastante escasa, lo que ralentiza la ejecución. Así, las funciones de SPIP, en estos alojamientos, tardan más tiempo en ejecutarse y la duración máxima para que se ejecuten es ridículamente corta. Imagina un tren que no puede funcionar más que durante una hora, y que debe recorrer una distancia de 120 kilómetros sobre líneas cuya velocidad está limitada a 60 km/h: a medio camino el tren se detendrá en un descampado.

Este problema se reproduce sistemáticamente con artículos largos: con estos proveedores, el cálculo de tales páginas es interrumpido por el servidor antes del fin de los cálculos, lo que impide que se vean y causa el mensaje de error «Maximum execution time exceeded».

No existe ninguna solución técnica. SPIP ya ha sido ampliamente optimizado para ser más rápido, el problema ahora está del lado de los proveedores de alojamiento.

-  La única solución inmediata: cambiar a otro alojamiento, con proveedores que ofrezcan un servicio utilizable, y no tan extremadamente restringido. Si tienes acceso a la configuración de php (archivo /etc/php/apache/php.ini [1] en Linux), hay que modificar el parámetro max_execution_time.

-  Escribe al responsable del alojamiento para pedirle que aumente el tiempo máximo de ejecución de los scripts (30 segundos como todo el mundo, por ejemplo). Nunca se sabe, quizás con el tiempo... Pero de momento, la ausencia de reacción parece indicar más una voluntad deliberada de restringir el alojamiento gratuito, para empujar a las webmistress a cambiar al servicio de pago, que un imperativo técnico real.

Notas

[1o /etc/php5/apache2/php.ini para las nuevas versiones de php5 y Apache2

Autor o autora Xuacu Publicado el: Actualizado: 26/10/12

Traducciones: corsu, English, Español, français, italiano, Nederlands, Português, Türkçe