wp_cron()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
wp_cron()
Описание
Функция spawn_cron() пытается выполнить неблокирующий петлевой запрос к wp-cron.php (когда не используется альтернативный cron). Однако функция wp_remote_post() не всегда учитывает параметры timeout и blocking. Таймаут 0.01 в итоге может занять 1 секунду. Когда это выполняется на действии «wp_loaded», увеличивается время до первого байта (TTFB), поскольку HTML нельзя отправить, пока идёт ожидание инициации cron-запроса. Перенос запуска cron на хук «shutdown» позволяет серверу сбросить HTML-документ в браузер, пока идёт ожидание запроса.
Оригинал (английский)
The spawn_cron() function attempts to make a non-blocking loopback request to wp-cron.php (when alternative cron is not being used). However, the wp_remote_post() function does not always respect the timeout and blocking parameters. A timeout of 0.01 may end up taking 1 second. When this runs at the ‘wp_loaded’ action, it increases the Time To First Byte (TTFB) since the HTML cannot be sent while waiting for the cron request to initiate. Moving the spawning of cron to the ‘shutdown’ hook allows for the server to flush the HTML document to the browser while waiting for the request.
Исходный код
wp-includes/cron.php:1018
function wp_cron(): void {
if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) {
if ( did_action( 'wp_loaded' ) ) {
_wp_cron();
} else {
add_action( 'wp_loaded', '_wp_cron', 20 );
}
} elseif ( doing_action( 'shutdown' ) ) {
_wp_cron();
} else {
add_action( 'shutdown', '_wp_cron' );
}
}
История изменений
| Версия | Описание |
|---|---|
| 6.9.0 | The _wp_cron() callback is moved from 'wp_loaded' to the 'shutdown' action, unless ALTERNATE_WP_CRON is enabled; the function now always returns void. |
| 5.7.0 | Functionality moved to _wp_cron() to which this becomes a wrapper. |
| 5.1.0 | Return value added to indicate success or failure. |
| 2.1.0 | Introduced. |

