Randomly offset the update check schedule within $checkPeriod

This helps spread out update requests over all hours of the day and may prevent the update server from being hit with daily traffic spikes.
See #323 for discussion.
This commit is contained in:
Yahnis Elsts 2019-11-03 12:33:09 +02:00
parent 908249c92e
commit 7014c9d9fd
1 changed files with 8 additions and 1 deletions

View File

@ -51,7 +51,14 @@ if ( !class_exists('Puc_v4p8_Scheduler', false) ):
}
if ( !wp_next_scheduled($this->cronHook) && !defined('WP_INSTALLING') ) {
wp_schedule_event(time(), $scheduleName, $this->cronHook);
//Randomly offset the schedule to help prevent update server traffic spikes. Without this
//most checks may happen during times of day when people are most likely to install new plugins.
$firstCheckTime = time() - rand(0, max($this->checkPeriod * 3600 - 15 * 60, 1));
$firstCheckTime = apply_filters(
$this->updateChecker->getUniqueName('first_check_time'),
$firstCheckTime
);
wp_schedule_event($firstCheckTime, $scheduleName, $this->cronHook);
}
add_action($this->cronHook, array($this, 'maybeCheckForUpdates'));