SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Outils pour plugins > Tutoriaux pour Plugins

Ajouter une tache CRON dans un plugin SPIP

Comment générer l’exécution d’un traitement régulier en tâche de fond

samedi 1er décembre 2007, par chryjs. Dernier ajout samedi 1er décembre 2007


Vous avez rêvé de savoir comment, je vais essayer d’expliquer ce que j’en ai compris :-)


La documentation ci-dessous est faite à partir de mon analyse du code de SPIP et n’est donc pas la doc officielle... réalisée pour le Plugin SpipBB.

Pour ajouter une tâche de CRON exécutée, par exemple toutes les 60x10 secondes (soit toutes les 10 minutes) pour le plugin SpipBB.

1. Créer la tâche

Une tâche c’est une série d’actions à réaliser, que vous aurez programmé en PHP (a priori) pour s’intégrer dans SPIP. Vous pourrez regarder par exemple ce qui est fait dans le noyau pour le traitement des statistiques.

Il existe deux mécanismes légèrement différents à ce jour, dépendant de la version de SPIP :

Où et comment stocker la tâche planifiée selon la version de SPIP
SPIP 1.9.2 SPIP 1.9.3
Fichier inc/montravail.php genie/montravail.php
Code
cron_montravail($time)  {
        spip_log("Mon travail c est juste une ligne de log....");
}

genie_montravail($time)  {
        spip_log("Mon travail c est juste une ligne de log....");
}

Donc selon la version de SPIP pour laquelle vous rédigez votre plugin il vous faudra créer un fichier contenant la fonction idoine.

NB : Vous pouvez envisager de créer une compatibilité entre les deux soit en dupliquant les entrées soit en créant un appel de l’un par l’autre.

2. Ajout d’une entrée dans la liste des tâche à exécuter

Une fois la tâche existante, il faut qu’elle soit « planifiée », c’est-à-dire ajoutée à la liste des tâches planifiées que SPIP réalise déjà.

Dans le fichier plugin.xml on ajoute l’entrée :

Attention, dans cet exemple : SpipBB est le <prefix> (au sens plugin.xml) de mon plugin.

Dans le ficher spipbb_pipelines.php (qu’il faut créer s’il n’existe pas), on ajoute la partie suivante :

Mise en œuvre

Il ne faut pas oublier que le lancement de la tâche dépendra de la fréquentation de la page qui contient la balise #SPIP_CRON (par défaut la page sommaire).

Dans cet exemple, on pourra vérifier que dans tmp/spip.log je trouve régulièrement une ligne avec « Mon travail c’est juste une ligne de log »...


Répondre à cet article



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et fonctionnement SPIP-Contrib | SPIP | L'autre.net