Cron

Если вы правильно настроили cron, как описано в Cron, будут запускаться специальные события, чтобы вы могли зарегистрироваться на эти события из своего кода.

Пример ниже регистрирует функцию для ежедневного cron.

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

Если время важно в вашем событии cron, имейте в виду, что функции выполняются в порядке регистрации. Это может означать, что ваша функция может начаться (значительно) позже, чем вы ожидали. Однако параметры, предоставленные в событии, содержат исходное время запуска cron, поэтому вы всегда можете использовать эту информацию.

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

Пользовательские интервалы

Разработчики плагинов могут настраивать свои собственные пользовательские интервалы.

Предупреждение

Делать это НЕ рекомендуется, так как пользователям вашего плагина также может потребоваться настроить ваш пользовательский интервал. Старайтесь работать с интервалами по умолчанию. Если вам нужно выполнить определённую задачу, например, в 16:30, вы можете использовать интервал halfhour и проверить, что date('G', $start_time) == 16 и date('i', $start_time) == 30

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

function my_custom_cron_interval(\Elgg\Event $event) {
        $cron_intervals = $event->getValue();

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

        return $cron_intervals;
}

См.также

  • События содержит больше информации о событиях

  • Для получения дополнительной информации о поддерживаемом определении интервала cron см. документацию по PHP Scheduler