Updates: Only trigger Background Update processes from within the core update check when a core autoupdate is on offer.

This change reduces the number of API calls which WordPress makes to api.wordpress.org during release windows.

Previously the background updates would run upon every core update transient refresh, however now they'll only run if there's an update available.
The change also increases the cache period for plugin & theme checks when running via the cron, from never-cache to 2 hours, which should hopefully reduce the number of needless API calls.

Merges [42584] to the 4.9 branch.
Fixes #43103 for 4.9.

Built from https://develop.svn.wordpress.org/branches/4.9@42586


git-svn-id: http://core.svn.wordpress.org/branches/4.9@42415 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Dion Hulse 2018-01-24 04:32:41 +00:00
parent 723d0f2669
commit 366e0ada72
2 changed files with 20 additions and 6 deletions

View File

@ -168,7 +168,8 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
return;
}
$offers = $body['offers'];
$offers = $body['offers'];
$has_auto_update = false;
foreach ( $offers as &$offer ) {
foreach ( $offer as $offer_key => $value ) {
@ -182,6 +183,10 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
}
$offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale',
'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email', 'new_files' ), '' ) );
if ( 'autoupdate' == $offer->response ) {
$has_auto_update = true;
}
}
$updates = new stdClass();
@ -203,8 +208,13 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
}
// Trigger background updates if running non-interactively, and we weren't called from the update handler.
if ( $doing_cron && ! doing_action( 'wp_maybe_auto_update' ) ) {
do_action( 'wp_maybe_auto_update' );
if ( $doing_cron && $has_auto_update && ! doing_action( 'wp_maybe_auto_update' ) ) {
include_once( ABSPATH . '/wp-admin/includes/update.php' );
// Only trigger background updates if an acceptable autoupdate is on offer, avoids needless extra API calls.
if ( find_core_auto_update() ) {
do_action( 'wp_maybe_auto_update' );
}
}
}
@ -259,7 +269,7 @@ function wp_update_plugins( $extra_stats = array() ) {
break;
default :
if ( $doing_cron ) {
$timeout = 0;
$timeout = 2 * HOUR_IN_SECONDS;
} else {
$timeout = 12 * HOUR_IN_SECONDS;
}
@ -443,7 +453,11 @@ function wp_update_themes( $extra_stats = array() ) {
$timeout = HOUR_IN_SECONDS;
break;
default :
$timeout = $doing_cron ? 0 : 12 * HOUR_IN_SECONDS;
if ( $doing_cron ) {
$timeout = 2 * HOUR_IN_SECONDS;
} else {
$timeout = 12 * HOUR_IN_SECONDS;
}
}
$time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked );

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.9.3-alpha-42583';
$wp_version = '4.9.3-alpha-42586';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.