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à, le nombre négatif indiqué correspond au nombre de secondes d’intervalle pour 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 : 08/02/10

Traductions : English, français