Pour éviter qu’une erreur de programmation dans les scripts PHP ne bloque le fonctionne du serveur, les hébergeurs fixent une durée maximale d’exécution de chaque page PHP. Cette limite est généralement fixée à 30 secondes : si une page « part » dans un calcul qui prend plus de 30 secondes (un énorme calcul, ou une boucle sans fin), le serveur interrompt le calcul et l’indique par un message d’erreur. Pour SPIP, cette limite de 30 secondes est largement suffisante pour effectuer tous ses calculs.
Certains hébergeurs fixent cependant des durées maximales très courtes. C’est notamment le cas chez Free (15 secondes) et chez Online (8 secondes). De plus, chez ces hébergeurs, la mémoire allouée au fonctionnement de PHP est plutôt faible, ce qui en ralentit l’exécution. Ainsi, les fonctions de SPIP, chez ces hébergeurs, prennent plus de temps à s’exécuter, et la durée maximale pour qu’elles s’exécutent est ridiculement courte. Imaginez un train qui ne peut fonctionner que pendant une heure, et qui doit parcourir une distance de 120 kilomètres sur des lignes où la vitesse est limitée à 60 km/h : à mi-chemin le train s’arrêtera en rase campagne.
Ce problème se rencontre systématiquement avec des articles longs : chez ces hébergeurs, le calcul de telles page est interrompu par le serveur avant la fin des calculs, ce qui interdit leur affichage et provoque le message d’erreur « Maximum execution time exceeded ».
Il n’y a aucune solution technique. SPIP a déjà été largement optimisé pour tourner plus vite, le problème est désormais du côté des hébergeurs.
- Seule solution immédiate : faites-vous héberger ailleurs, chez des hébergeurs qui fournissent un service utilisable, et non pas bridé d’une manière extrême. Si vous avez accès à la configuration de PHP (fichier /etc/php/apache/php.ini sur Linux), il faut modifier le paramètre max_execution_time.
- Ecrivez au responsable de l’hébergement pour lui demander d’augmenter la durée maximale d’exécution des scripts (30 secondes comme tout le monde, par exemple). On ne sait jamais, peut-être qu’à la longue... Mais pour l’instant, l’absence de réactions semble plus indiquer une volonté délibérée de brider l’hébergement gratuit pour pousser les webmestres à passer à l’hébergement payant qu’un réel impératif technique.