PHP Timeout : max_execution_time
Configurer les timeouts PHP correctement.
PHP a une limite d'exécution par défaut de 30 secondes. Au-delà , le script est tué. Pour les opérations longues (imports, exports, génération de PDF), il faut ajuster cette limite.
SymptĂ´mes
- Erreur "Maximum execution time exceeded"
- Page blanche sur les opérations longues
- Imports/exports qui échouent
- Timeout sans message d'erreur visible
Causes Fréquentes
- max_execution_time trop court : La valeur par défaut (30s) est insuffisante.
- Script mal optimisé : Le code fait trop d'opérations ou des boucles inefficaces.
- Dépendance externe lente : API tierce ou BDD qui répond lentement.
Étapes de Diagnostic
- Vérifiez les logs PHP pour "Maximum execution time"
- Identifiez le script concerné
- Mesurez le temps d'exécution avec microtime()
- Profilez le code pour trouver le goulot
Automatiser avec MoniTao
MoniTao détecte les timeouts PHP :
- Surveillance des endpoints avec timeout configurable
- Alertes sur les erreurs 500 (timeout fatal)
- Heartbeat pour les scripts en background
Bonnes Pratiques
- Mettez les opérations longues en background (queue)
- Utilisez set_time_limit() pour des scripts spécifiques
- Alignez les timeouts PHP avec Nginx/Apache
- Implémentez des progress indicators pour l'UX
Questions Fréquentes
Comment augmenter max_execution_time ?
Dans php.ini, via .htaccess, ou set_time_limit() dans le code.
Peut-on mettre 0 (infini) ?
Techniquement oui, mais c'est risqué. Préférez une valeur élevée (300s).
set_time_limit reset-t-il le timer ?
Oui, appeler set_time_limit(30) repart de zéro.
Comment surveiller les scripts longs ?
Utilisez le heartbeat MoniTao : le script ping avant et après.
Liens utiles
PrĂŞt Ă dormir sur vos deux oreilles ?
Commencez gratuitement, sans carte bancaire.