Почему wp-cron выполняется только при посещении страницы?


Как я понял, wp-cron запускается после HTTP-запроса к данному домену. Может кто-нибудь объяснить мне, почему это так? Я не совсем понимаю, почему выполнение (запланированных) событий wp-cron зависит от пользователей, посещающих страницу? Я все еще новичок в разработке WordPress, так что, возможно, мне просто не хватает общего понимания основных концепций программирования.

Author: CorinLUSI, 2020-01-23

1 answers

С помощью только WordPress невозможно запланировать запуск кода в фоновом режиме в определенное время. WordPress, как и большинство (если не все) веб-приложений PHP, фактически запускается только в ответ на доступ к URL-адресу и запрос, направленный на сервер. Для запуска запланированного события в определенное время вам потребуется что-то, запущенное на сервере, например, фактическое задание cron, которое может выполняться непрерывно и запускать запланированные события, даже если WordPress не был запущен бежать.

WordPress сам по себе не способен изменить поведение сервера, чтобы внедрить это, но WordPress должен иметь возможность планировать задачи "из коробки", не требуя от пользователей опыта работы с сервером или дополнительной конфигурации сервера, выходящей за рамки стандартной установки. Для этого он проверяет наличие запланированных событий при каждом запуске и выполняет любые события, для которых прошло запланированное время. Для сайтов с высоким трафиком это может произойти как можно скорее, но для сайтов с очень низким трафиком это может означать, что код выполняется с опозданием на день или более.

Наиболее простым решением для этого является настройка реального задания cron на вашем сервере для автоматической загрузки WordPress так часто, как вам нужно. Способ сделать это полностью зависит от того, какой тип сервера/хостинга у вас есть, и от доступа для внесения такого рода изменений. WordPress не может знать все типы среды хостинга и не имеет такого доступа по соображениям безопасности, поэтому он не может сделать это сам. Один метод, для SiteGround, описано здесь, но вы должны попросить своего хоста помочь сделать это в вашей собственной среде.

 3
Author: Jacob Peattie, 2020-06-15 08:21:38