Author: cedric@yterium.com
Date: 2013-11-25 15:11:36 +0100 (lun, 25 nov 2013)
New Revision: 21005
Log:
Perf issue sur le lancement du CRON :
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.
Modified:
branches/spip-3.0/ecrire/inc/queue.php
Details: http://core.spip.org/projects/spip/repository/revisions/21005