lancer une tache CRON comment faire?

Bonjour,
J’ai lu la documentation sur la déclaration d’une tache cron, mais ce n’est pas clair.
Il est indiqué:
« function monplugin_taches_generales_cron($taches){… »
Bien, mais je n’ai pas de plugin, je veux juste déclarer une tache de maintenance quotidienne.
A la place de plugin je mets quoi, genie?
Ou déclarer cette fonction, dans le ficher mes_options.php ?
Ou mettre le dossier genie, dans le dossier squelettes?
Merci de votre aide.
Mon site: modelevivant.art sous spip évidemment!

Salut, voir « Déclaration hors plugin » sur Qu'est-ce qu'un pipeline ? - Programmer avec SPIP 4

Cela étant je conseille fortement de mettre cela en plugin. Ca permet de tout « encapsuler » dans un dossier fonctionnel.

Merci pour l’info.
Mais cela ne marche pas, j’ai l’erreur
Warning: Undefined array key « taches_generales_cron » in …
Je n’ai pas trouvé la définition dans un fichier php de spip de « taches_generales_cron »
Mon code:

$GLOBALS['spip_pipeline']['taches_generales_cron'] .= "|periodic_task";
function periodic_task_taches_generales_cron($taches){
	$taches['my_periodic_task'] = 24*3600; // every day
	return $taches;

Avec la fonction genie_my_periodic_task_dist définie dans le fichier squelettes/genie/my_periodic_task.php

Pour info, je n’ai pas défini de plugin pour raison de simplification, sachant que mon site est très different du site spip de base, avec un design propre et pleins de fonctions spécifiques., c’est tout le site qu’il faudrait mettre en plugin!

Relis bien la doc, la fonction doit être nommée comme celle ajoutée par $GLOBALS['spip_pipeline']['taches_generales_cron'] .= "|periodic_task";

C’est en effet une bonne idée.

Ite doc est :

// Ajout dans le pipeline "insert_head" :
$GLOBALS['spip_pipeline']['insert_head'] .= "|nom_de_la_fonction";

// Et par ailleurs !:
function nom_de_la_fonction($flux) {
	return $flux .= "Ce texte sera ajoute";
}

et c’est donc directement nom_de_la_fonction tel que passé dans le pipeline que tu dois définir, sans préfixe ni suffixe.

Merci pour l’aide,
Mais même problème:
Undefined array key « insert_head » in D:\SFR Cloud\web\blog\config\mes_options.php on line 139

Le sam. 6 déc. 2025 à 16:55, JLuc via Discuter de SPIP <noreply@discuter.spip.net> a écrit :

JLuc
Décembre 6

Ite doc est :

// Ajout dans le pipeline "insert_head" :
$GLOBALS['spip_pipeline']['insert_head'] .= "|nom_de_la_fonction";

// Et par ailleurs !:
function nom_de_la_fonction($flux) {
	return $flux .= "Ce texte sera ajoute";
}

et c’est donc directement nom_de_la_fonction tel que passé dans le pipeline que tu dois définir, sans préfixe ni suffixe.


Voir le sujet ou répondre à cet e-mail pour répondre.

Pour vous désabonner de ces e-mails, cliquez ici.

Bonjour,
Impossible de créer une tache CRON journalière hors plugin, ne serait-il pas possible d’avoir un exemple simple clair et concis?
J’ai essayé les modifications proposées par des contributeurs, mais rien à faire, cela ne marche pas.
Voici mon code dans le fichier mes_options.php:

if (!isset($GLOBALS['spip_pipeline']['insert_head'])) {
	$GLOBALS['spip_pipeline']['insert_head'] = '';
}
$GLOBALS['spip_pipeline']['insert_head'] .= "|periodic_task";

function periodic_task($taches){
	$taches['my_periodic_task'] = 24*3600; // every day
	return $taches;
}
function my_periodic_task($t) {
... }

Merci de votre aide qui me serait d’un grand secours!

Le pipeline pour lancer des tâches CRON n’est pas insert_head mais taches_generales_cron - Programmer avec SPIP 4 :slight_smile:

1 « J'aime »