onetrickpony
  • 0
Гуру

Как протестировать wp_cron?

  • 0

Это какой-то глупый вопрос…

Я запланировал выполнение действия каждый час:

if(!wp_next_scheduled('my_hourly_events'))
  wp_schedule_event(time(), 'hourly', 'my_hourly_events');

add_action('my_hourly_events', 'the_function_to_run');

function the_function_to_run(){
   echo 'it works!'; 
}

Как я могу проверить, работает ли это, не дожидаясь часа? 🙂

Я пытался добавить wp_clear_scheduled_hook('my_hourly_events'); перед этим кодом и добавить wp_cron() после, но я не вижу, чтобы моя функция работала…

редактировать:

хорошо, я добавил trigger_error() внутри своей функции, проверил журнал ошибок apache, и он там 🙂

Так что теперь я еще больше запутался:

  • Как wp-cron может работать в фоновом режиме? потому что, по-видимому, это то, что происходит, если я не вижу выхода…

  • похоже, это не работает в контексте объекта; Зачем?

Share
  1. Хорошо, я узнал, что wp-cron.php выполняется с расширением wp_remote_post() . это все объясняет…

    • 0
  2. Мой любимый плагин для этого — Core Control, у которого есть очень хороший модуль для отображения того, что происходит в cron — какие события настроены, когда они будут запускаться в следующий раз и т. д.

    На уровне грязных рук см. _get_cron_array(), который возвращает внутренние сохраненные данные для событий cron (верхний уровень ключей — это временные метки).

    • 0
  3. wp-cli — это еще один способ:

    Список событий

    > wp cron event list
    +-------------------+---------------------+-----------------------+---------------+
    | hook              | next_run_gmt        | next_run_relative     | recurrence    |
    +-------------------+---------------------+-----------------------+---------------+
    | wp_update_plugins | 2020-04-14 08:11:38 | 7 hours 24 minutes    | 12 hours      |
    | wp_update_themes  | 2020-04-14 08:11:38 | 7 hours 24 minutes    | 12 hours      |
    | wcsc_prime_sites  | 2020-04-14 17:00:55 | 16 hours 13 minutes   | 1 day         |
    +-------------------+---------------------+-----------------------+---------------+
    

    Запланировать событие

    > wp cron event schedule wp_update_plugins "now +5 seconds"
    Success: Scheduled event with hook 'wp_update_plugins' for 2020-04-14 00:43:54 GMT.
    

    Затем вы можете посетить внешний интерфейс сайта и обновить пару раз, чтобы убедиться, что он активирован. Затем запустите list снова, чтобы увидеть, что это больше не запланировано.

    Запустить прямо в терминале

    > wp cron event run wcsc_prime_sites
    Executed the cron event 'wcsc_prime_sites' in 0.805s.
    Success: Executed a total of 1 cron event.
    

    Одна особенность, о которой следует помнить, заключается в том, что wp-cli работает в контексте wp-admin, а WP Cron работает во внешнем интерфейсе. Обычно это не проблема, но когда вы пишете задания, убедитесь, что вы загрузили require() все wp-admin/includes файлы, которые ваш код ожидает загрузить.

    Если вы этого не сделаете, то задание будет нормально работать в wp-cli, но при нормальном запуске выдаст фатальную ошибку.

    Другие команды

    Бегите wp help cron за подробностями.

    • 0

Оставить ответ

You must login to add an answer.