Рубрики
Backend

Запуск WordPress cron вручную

Каждый раз, когда пользователь заходит на сайт, WordPress запускает процесс проверки крон-заданий для выполнения.

Это плохо по двум причинам. Во первых цепочка выполнения заданий в расписании будет запускаться, в момент, когда какой-нибудь пользователь зайдет на сайт. Во-вторых, обработчики задач могут сожрать ресурсы сервера и посетитель сайта, который инициировал всю эту работу своим посещением, будет долго ждать контент, либо вовсе поймает 504 ошибку!

Главное то, что вы зависите от посещений вашего сайта.

Например, если вы запланировали публикацию новости в 9 утра, то до тех пор пока на сайт кто-то не зайдет, новость опубликована не будет.

Поэтому необходимо сделать так, чтобы работал серверный Cron.

Сперва нужно отключить запуск вордпрессовского крона при запуске системы. В файле wp-config.php вставляем следующую строку:

define('DISABLE_WP_CRON', true);

Далее добавляем задачу в крон, чтобы он ежеминутно вызывал файл wp-cron.php.

  • Подключаемся к серверу по SSH.
  • Переходим в корневую директорию WordPress по средствам команды cd path_to_wp/public/;
  • Получаем полный путь к этой директории введя команду pwd;
  • Создаем файл crontab выполнив команду crontab -e;
  • Если у вас открылся редактор Vim нажимаем на клавиатуре i, чтобы инициировать ввод и пишем: * * * * php -q /path_to_wp/public/wp-cron.php &> /dev/null;
  • Жмем Ctrl+C, чтоб выйти из режима ввода;
  • Жмем двоеточие и вводим команду wq, чтоб сохранить файл и выйти из него;
  • Проверьте, что файл сохранен, а задача добавлена, выполнив команду crontab -l.

Таким образом мы создали ежеминутное расписание на обращение к wp-cron.php.

Теперь задания гарантировано выполняются и не зависят от посетителей.

Если ежеминутная проверка заданий вам не подходит, запустите проверку с другим интервалом.

Чтобы правильно указать регулярность запуска воспользуйтесь сайтом-помощником: crontab.guru