Wordpress, Всё о Woocommerce

WP Cron настройка

Оптимальная настройка wp cron

Немного истории, так вот когда создавался WordPress он должен был работать на любом хостинге, включая самый дешёвый тарифный план на котором у пользователя часто нет доступа к системному cron
и где нельзя работать через SSH, CLI и т.п. Именно поэтому сделали «псевдо-cron» в WordPress. Где запуск через HTTP без зависимости от сервера работает «из коробки» в 100% случаев и это максимальная совместимость.
Как это выглядит с точки зрения разработчиков WordPress. Смысл такой:

Лучше cron, который работает не идеально, чем cron, которого нет вообще

То есть получается если есть трафик то всё супер, а если — нет трафика, то задачи подождут первого захода)
Почему у новых, только что созданных сайтов на WordPress всё вроде как работает? У начинающих пользователей обычно нет сложных cron-задач, нет критичных по времени процессов, задачи все простые:

  • публикация постов
  • обновления
  • иногда отправка писем

И даже если задача должна была выполниться в 12:00 например, а сайт посетили только вечером или вообще на другой день, то пользователь этого просто не замечает)))

Когда начинаются реальные проблемы с wp cron

Проблемы с wp cron появляются, когда сайт «взрослеет», то есть установили и настроили онлайн магазин на WooCommerce пошли первые заказы, статусы, письма интеграции (API, CRM), очереди задач образовались, массовые рассылки, импорт/экспорт товаров и т.д. Тут уже задержки становятся заметны, задачи могут выполняться пачками, нагрузка скачет и здесь надо уже руками настраивать серверный cron так как возможностей wp cron будет недостаточно.

Что надо сделать?

Первым делом в файле wp-config.php который находится в корневой директории вашего сайта прописываете следующие:

define( 'DISABLE_WP_CRON', true );

Эта запись отключает wp cron, далее соединяйтесь по ssh со своим сервером и прописываете такое задание в серверный cron выполним последовательно эти действия:

crontab -e

Так вы заходите в режим редактирования cron на сервере. Если делаете это первый раз вам система предложит на выбор несколько редакторов, нажмите 1 — это простой, популярный редактор nano в операционной системе Linux

 */2 * * * 1-5 /usr/local/bin/wp --path=/var/www/user/data/www/cardevice.ru cron event run --due-now >> /var/www/user/data/www/cardevice.ru/wp-cron.log 2>&1 

Чтобы сохранить нажимаете на клавиатуре Ctrl O потом кнопку Enter и Ctrl X
Чтобы проверить что запись сохранилась набери в терминале:

crontab -l

Создавать задание для серверного cron лучше под тем пользователем под кем установлена система WordPress. Можно это делать и из под root, но тогда команды будут такие:

crontab -u myname1 -l

это смотреть, где myname1 — это имя пользователя.

crontab -u myname1 -e

это редактировать серверный cron

Проблемы WP Cron

  • Задачи зависят от посетителей: нет трафика — задачи не выполняются
  • Непредсказуемое время запуска (возможны задержки)
  • При высокой нагрузке задачи могут пропускаться или выполняться с опозданием
  • Долгие и ресурсоёмкие задачи могут замедлять сайт
  • Нет точного соблюдения расписания
  • Не подходит для критически важных или регулярных задач

Преимущества серверного cron

  • Работает независимо от посещаемости сайта
  • Чёткое выполнение по расписанию (например, каждую минуту)
  • Высокая надёжность и предсказуемость
  • Стабильная работа даже при нагрузке
  • Не влияет на производительность сайта
  • Подходит для любых задач, включая критически важные
  • Гибкая настройка расписания (cron expressions)

Если коротко объяснить: wp cron — это чтобы работало у всех, а серверный cron чтобы работало правильно!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *