[spip-dev] balise #SPIP_CRON, cache et site multidomaine

Bonjour,

Je viens de me rendre compte d'un détail qui peut avoir un impact négatif assez important sur les performances d'un serveur :

la balise #SPIP_CRON insère le code

<!-- SPIP-CRON --><div style=“background-image: url(‘http://domaine/spip.php?action=cron’);”></div>

Le problème vient du fait que "domaine" est en fait le domaine utilisé au moment de l'appel à la balise, le résultat est mis en cache, généralement dans le pied de page avec un délai assez long car on ne change pas son contenu tous les jours.
Ca n'aurait normalement aucune conséquence, mais j'ai remarqué grâce à job_queue que, quand le recalcul du pied de page tombait sur un domaine alternatif de mon site (utilisé pour une zone restreinte en nombre de pages et de visites), les appels au cron depuis une page du domaine principal ne passaient plus !

Résultat : une file d'attente qui se remplit plus vite qu'elle arrive à se vider (en raison du différentiel de visites domaine principal / domaine alternatif), et parfois apache qui s'emballe.

Solution trouvée : j'ai sorti SPIP_CRON du pied de page pour le mettre dans tous mes squelettes de base (j'ai essayé de différencier le pied dans le cache en fonction du domaine utilisé en passant en paramètre {domaine=#EVAL{$_SERVER['HTTP_HOST']}}, mais ça n'a pas marché malgré un appel explicite à #ENV{domaine} pour imprimer un commentaire html dans le pied de page inclus. Pourquoi ? Je ne sais pas)

Ne serait-il pas préférable que le calcul de la balise renvoie un chemin absolu depuis le document_root sans expliciter le domaine ?

A bientôt
    Simon

La dernière version de job_queue modifie le fonctionnement de tout cela :
- #SPIP_CRON ne sert plus à rien
- l'appel au cron est généré en fin de hit, hors cache, uniquement lorsque c'est necessaire (on economise des hits serveur quand la queue n'a pas de tache en attente)
- il y a un seuil parametrable de nombre de jobs en attente au dela duquel l'appel au vidage de la queue se fait en fin de hit en appel direct, et non par image background
- les bots sont repérés, et on leur fait faire du travail en fin de hit aussi, vu qu'ils ne chargeront pas l'image background.

Tout cela devrait résoudre tes problèmes.

Cédric

cedric.morin@yterium.com a écrit :

La dernière version de job_queue modifie le fonctionnement de tout cela :
- #SPIP_CRON ne sert plus à rien
- l'appel au cron est généré en fin de hit, hors cache, uniquement lorsque c'est necessaire (on economise des hits serveur quand la queue n'a pas de tache en attente)
- il y a un seuil parametrable de nombre de jobs en attente au dela duquel l'appel au vidage de la queue se fait en fin de hit en appel direct, et non par image background
- les bots sont repérés, et on leur fait faire du travail en fin de hit aussi, vu qu'ils ne chargeront pas l'image background.

Tout cela devrait résoudre tes problèmes.

Cédric
  
Je viens tout juste de voir passer les commits en effet.
On dirait presque que c'est fait exprès :slight_smile:

Merci pour tout, je patche !