Cron

Si vous configurez cron correctement comme décrit dans Cron des hooks spéciaux seront déclenchés afin que vous puissiez enregistrer des gestionnaires pour ces hooks depuis votre propre code.

L’exemple ci-dessous enregistre une fonction pour le cron quotidien.

function my_plugin_init() {
    elgg_register_plugin_hook_handler('cron', 'daily', 'my_plugin_cron_handler');
}

Si le timing est important dans votre hook cron, notez que les fonctions sont exécutées dans l’ordre d’enregistrement. Cela pourrait signifier que votre fonction peut commencer (beaucoup) plus tard que vous l’avez peut-être prévu. Toutefois, les paramètres fournis dans le hook contiennent l’heure de départ d’origine du cron, de sorte que vous pouvez toujours utiliser ces informations.

function my_plugin_cron_handler(\Elgg\Hook $hook) {
    $start_time = $hook->getParam('time');
}

Intervalles personnalisés

Les développeurs de plugins peuvent configurer leurs propres intervalles personnalisés.

Avertissement

Il n’est PAS recommandé de faire cela, car les utilisateurs de votre plugin pourraient aussi avoir besoin de configurer votre intervalle personnalisé. Essayez de travailler avec les intervalles par défaut. Si vous avez seulement à effectuer une certaine tâche à 16:30, vous pouvez utiliser l’intervalle d’une demi-heure halfhour et vérifier que date('G', $start_time) == 16 et date('i', $start_time) == 30

elgg_register_plugin_hook_hander('cron:intervals', 'system', 'my_custom_cron_interval');

function my_custom_cron_interval(\Elgg\Hook $hook) {
        $cron_intervals = $hook->getValue();

        // add custom interval
        $cron_intervals['my_custom_interval'] = '30 16 * * *'; // every day at 16:30 hours

        return $cron_intervals;
}

Voir aussi