Déclarer une tâche

Pour déclarer une tâche, il faut indiquer son nom et sa périodicité en secondes via le pipeline taches_generales_cron :

function monplugin_taches_generales_cron($taches){
	$taches['nom'] = 24*3600; // tous les jours
	return $taches;
}

Cette tâche sera appelée au moment venu. Les traitements sont placés dans un fichier du répertoire genie/, homonyme à la tâche (nom.php) et disposant d’une fonction genie_nom_dist().

La fonction reçoit en argument la date à laquelle s’est réalisé le dernier traitement de cette tâche. Elle doit retourner un nombre :

  • nul, si la tâche n’a rien à faire
  • positif, si la tâche a été traitée
  • négatif, si la tâche a commencé, mais doit se poursuivre. Cela permet d’effectuer des tâches par lots (pour éviter des timeout sur les exécutions des scripts PHP à cause de traitements trop longs). Dans ce cas là, la valeur absolue du nombre négatif indiqué doit être le timestamp de la dernière exécution de la tâche à partir duquel doit s’appliquer le délai spécifié dans le plugin taches_generales_cron pour définir le moment de la prochaine exécution.

Exemple

Cet exemple est simple, issu des tâches de « maintenance » de SPIP, dans le fichier genie/maintenance.php, puisqu’il exécute des fonctions et renvoie toujours 1, indiquant que l’action a été réalisée.

// Diverses taches de maintenance
function genie_maintenance_dist ($t) {
 
	// (re)mettre .htaccess avec deny from all
	// dans les deux repertoires dits inaccessibles par http
	include_spip('inc/acces');
	verifier_htaccess(_DIR_ETC);
	verifier_htaccess(_DIR_TMP);
 
	// Verifier qu'aucune table n'est crashee
	if (!_request('reinstall'))
		verifier_crash_tables();
 
	return 1;
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 25/11/20

Traductions : English, français