Problème
Certains scripts PHP doivent s'exécuter pendant de longues périodes sans interruption mais semblent se bloquer ou retourner l'erreur "Connection timeout".
Cause
Lorsqu'un script ne renvoie rien pendant une longue période, cela peut déclencher un délai d'attente sur le serveur qui ferme la connexion client. Ceci est fait pour empêcher les scripts PHP mal écrits de bloquer le serveur.
Aussi, quand un utilisateur ferme une connexion (en fermant une fenêtre, par exemple), le serveur Web (LiteSpeed) interrompt le traitement de ce script PHP en arrêtant le processus PHP. Ceci afin d'éviter de gaspiller des ressources système et d'empêcher certains types d'attaques DoS.
Dans certains cas, il est préférable de ne pas abandonner le script PHP, que la connexion ait été fermée ou non. Par exemple, les tâches cron WordPress intégrées démarrent une tâche en arrière-plan en envoyant une demande à wp-cron.php, puis en fermant immédiatement la connexion sans attendre de réponse. Cependant, pour que la tâche cron se termine, le serveur Web doit maintenir le moteur PHP en marche sans interruption.
Pour obtenir les fonctionnalités souhaitées de vos applications Web, vous devrez peut-être empêcher l'expiration et la fermeture de la connexion. Cela peut être évité en utilisant la variable noconntimeout et noabort de LiteSpeed.
Solution
Il faut ajouter la ligne suivante au fichier .htaccess :
RewriteRule .* - [E=noabort:1, E=noconntimeout:1]