Carnet Wiki

SpipCron

Version 4 — Mars 2007 NicolasR

Cette balise est maintenant documentée dans la doc officielle

Pour résumer les explications (lab.spip.net), la gestion des tâches de fond se déclenche à travers une image transparente (envoyée par spip_background.php3) en background-image d’une <div> de 1 pixel.

Pour cela il faut mettre #SPIP_CRON quelque part dans le squelette d’une page relativement fréquentée (par exemple sommaire.html ou article.html) pour que les tâches de fond soient presque toujours traitées par cette astuce.

Si on ne met pas #SPIP_CRON dans un squelette, alors les tâches de fond s’exécutent comme avant, c’est-à-dire à la fin de l’envoi des pages. L’inconvénient est que cela peut se traduire par des pages lentes pour les visiteurs qui n’ont pas de chance.

Pour les bidouilleurs qui veulent ajouter une tâche dans la liste, l’API est expliquée dans spip_background et
inc_cron .

[YvesGrenier] J’ajoute ici des explications concernant #SPIP_CRON et la syndication.

J’ai eu l’impression qu’il y avait potentiellement une confusion entre deux temps successifs de la syndication. Je vais essayer de clarifier un peu le mécanisme de la syndication à partir de ce que j’ai compris du code de spip.

Il y a dans la syndication deux temps nettement disjoints :
1) le moment où spip aspire, à partir des sites syndiqués, les infos sur les nouveaux articles publiés sur ces sites, et les stocke dans la base,
2) le moment où spip affiche ces informations, au moyen d’une boucle dans un squelette lors du calcul ou du recalcul de la page.

J’insiste : ces deux temps sont nettement disjoints. Le premier est effectué soit au moment où on syndique le site pour la première fois, soit si on clique sur « mettre à jour maintenant » depuis l’espace privé, soit en tâche de fond quand un visiteur charge un page dont le squelette contient la balise #SPIP_CRON. Il suffit donc d’avoir mis cette balise dans le squelette d’une page souvent visitée (exemple sommaire.html ou article.html) pour qu’une visite déclenche en arrière plan une tâche qui est prise dans une liste qui comprend la syndication (entre autres). Cette balise fabrique une image invisible. Elle peut être mise un peu n’importe où dans la page. D’ailleurs, si elle a la syntaxe d’une balise, elle se comporte plutôt comme une sonnette qui appellerait les tâches de fond (les petits nains qui travaillent dans la mine).

Dans le deuxième temps (calcul de la page via le squelette), spip utilise uniquement les infos stockées dans la base pour afficher les sites syndiqués. Il n’y a aucune mise à jour des sites dans ce cas. Inutile donc de mettre la balise #SPIP_CRON dans une page qui affiche les sites ou articles syndiqués, puisque aspiration et affichage se font dans des temps complètement différents. Ce temps ne fera apparaître de nouvelles informations que si entre temps la tâche de fond est allé rechercher des infos depuis les sites syndiqués. La tâche de fond est cachée, ni le visiteur dans la partie publique, ni l’admin dans la partie privée ne la voient. Sa seule trace est dans le fichier spip.log (répertoire /ecrire/data/).