PHP не є постійно працюючим процесом: він працює лише за запитом. Наскільки я можу сказати, Wordpress може оновлювати себе лише тоді, коли хтось завантажує веб-сторінку. Але процес оновлення не миттєвий, тому, безумовно, користувач, який відвідує сайт, мав би дуже повільне завантаження сторінки.
Чи є інший трюк, який вони використовують для автоматичних оновлень? Я шукав всюди, але не знайшов жодного пояснення.
Система, яку ви шукаєте тут, називається "WP Cron". Це фонова система процесів у WordPress, яка дозволяє події відбуватися поза звичайною обробкою. Їм все ще потрібен спусковий механізм, щоб відбити їх, але вони не перешкоджають завантаженню сторінок через фоновий процес.
Так що так, хтось повинен завантажити вашу сторінку. Вимкнено у файлі за замовчуванням filters.php, ви знайдете цей рядок коду:
add_action( 'init', 'wp_cron' );
Отже, при кожному завантаженні сторінки функція wp_cron працює. Ця функція закінчена в wp-include / cron.php, і це робиться для перевірки запланованих подій у базі даних. Якщо у фоновому режимі є якісь процеси, які потрібно запустити, він викликає функцію spawn_cron.
Spawn cron має два можливі способи роботи, але перший і найпоширеніший - викликати функцію wp_remote_post для встановлення з'єднання назад до себе, за URL-адресою wp-cron.php. Створюючи цей додатковий запит HTTP, він запускає інший процес PHP, щоб виконати всю фактичну роботу. Тут запит не блокується, із затримкою 0,01 секунди. Отже, тут насправді не виходить ніяких результатів. Мета запиту - просто запустити новий процес у фоновому режимі. Після цього він просто повертається, тому користувач, який переглядає, ніколи не має затримок.
Процес wp-cron.php - це те, що реально працює, і оновлення, і все інше. Багато процесів у WordPress обробляється системою cron. Заплановані публікації після публікації, обробка пінгерів, перевірки оновлень, все, що повинно відбутися поза нормальним потоком, можна запланувати, а потім виконати за потребою.
Але так, звичайне потрапляння на сайт має справді статися, щоб почати процес. І ні, WordPress.org не контактує безпосередньо з вашим сайтом, щоб розпочати роботу, ваш сайт повинен отримати певну форму трафіку, щоб запустити його. Будь-яка форма руху буде робити.