Почему error_log не вызывается во время моего cron? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь запланировать запуск каждые пять минут.

Приведенный ниже код успешно планирует cron, и он появляется в WP Crontrol, но "Doing cron!" никогда не появляется в журнале ошибок.

Что не так?

add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);

function do_cron_stuff()
{
    error_log('Doing a cron!');
}

add_filter('cron_schedules', 'cron_stuff_add_5_minute_cron_interval');

function cron_stuff_add_5_minute_cron_interval($schedules)
{
    error_log("cron_stuff_add_5_minute_cron_interval called");

    $schedules['five_minutes'] =
    [
        'interval' => 300,
        'display'  => esc_html__('Every Five Minutes')
    ];

    return $schedules;
}

register_activation_hook(__FILE__, 'cron_stuff_plugin_activation');

function cron_stuff_plugin_activation()
{
    error_log("cron_stuff_plugin_activation called");

    if (wp_next_scheduled('do_cron_stuff_event') === false)
    {
        wp_schedule_event(time(), 'five_minutes', 'do_cron_stuff_event');
    }
}

register_deactivation_hook(__FILE__, 'cron_stuff_plugin_deactivation');

function cron_stuff_plugin_deactivation()
{
    error_log("cron_stuff_plugin_deactivation called");

    wp_clear_scheduled_hook('do_cron_stuff_event');
}

Ответы [ 3 ]

1 голос
/ 24 января 2020

Мне кажется, проблема в том, что вы указываете 2 $accepted_args для

add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);

, а do_cron_stuff не принимает ни одного.

Измените его на

add_action('do_cron_stuff_event', 'do_cron_stuff', 10);

и посмотрите, работает ли это.

0 голосов
/ 28 января 2020

Оказывается, что error_log на самом деле был вызван , но поскольку он был активирован системным хроном, выходные данные журнала ошибок отправлялись в файл журнала ошибок, отличный от обычного.

Чтобы исправить это, я использовал третий параметр функции error_log для отправки вывода в пользовательский файл журнала.

0 голосов
/ 24 января 2020

WP-Cron работает: при каждой загрузке страницы проверяется список запланированных задач, чтобы увидеть, что нужно запустить. Все задачи, запланированные для запуска, будут выполняться во время загрузки этой страницы. WP-Cron не работает постоянно, как системный cron; он срабатывает только при загрузке страницы. Ошибки планирования могут возникнуть, если вы запланируете задачу на 14:00, а загрузка страниц не произойдет до 17:00. https://developer.wordpress.org/plugins/cron/

Это означает, что вы должны запускать (запрос) /wp-cron.php извне каждые 5 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...