+38
−32
Chargement en cours
sur certains serveurs le firewall est réglé pour DROP silencieusement toute requete http sortante : fsockopen attends alors 30s pour lancer la requete à chaque hit avant de rendre la main. cURL lui n'attends pas mais ne sait pas que sa requete echoue. Résultat le CRON ne tourne jamais et le site a un temps de réponse catastrophique.
Fix :
- limiter le timeout de fsockopen à 1s au lieu de 30s : si on a pas pu initialiser la connexion http en 1s c'est qu'il y a un soucis
- lorsque fsockopen echoue, rien ne sert de lancer cURL qui n'aura pas plus de chance ; cURL est utilisé en fallback uniquement si fsockopen n'est pas disponible (cas rare)
- du coup si fsockopen echoue on passe au lancement old-style avec HTML background (mais ça nous a couté 1s d'attente inutile)
- si on sait qu'on est sur une telle configuration (et qu'on ne peut pas la changer) on peut inhiber le lancement du cron par fsockopen/cURL avec un
define('_HTML_BG_CRON_FORCE',true);
dans mes_options.php. Cela economisera l'attente inutile.
Forge communautaire SPIP | Charte d'utilisation | Signaler un problème sur ce site