diff --git a/wp-includes/http.php b/wp-includes/http.php index cffc88e853..5d0523e9e3 100644 --- a/wp-includes/http.php +++ b/wp-includes/http.php @@ -786,6 +786,7 @@ class WP_Http_Streams { stream_set_timeout($handle, $r['timeout'] ); if ( ! $r['blocking'] ) { + stream_set_blocking($handle, 0); fclose($handle); return array( 'headers' => array(), 'body' => '', 'response' => array('code', 'message') ); } diff --git a/wp-includes/update.php b/wp-includes/update.php index 9097e3bcff..b2ca6023d0 100644 --- a/wp-includes/update.php +++ b/wp-includes/update.php @@ -35,6 +35,10 @@ function wp_version_check() { ) return false; + // Update last_checked for current to prevent multiple blocking requests if request hangs + $current->last_checked = time(); + update_option( 'update_core', $current ); + if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version($wpdb->users)); else @@ -138,6 +142,10 @@ function wp_update_plugins() { if ( $time_not_changed && !$plugin_changed ) return false; + // Update last_checked for current to prevent multiple blocking requests if request hangs + $current->last_checked = time(); + update_option( 'update_plugins', $current ); + $to_send->plugins = $plugins; $to_send->active = $active; $send = serialize( $to_send ); @@ -196,11 +204,15 @@ function wp_update_themes( ) { $new_option = ''; $new_option->last_checked = time( ); - $time_not_changed = isset( $current->last_checked ) && 43200 > ( time( ) - $current->last_checked ); + $time_not_changed = isset( $current_theme->last_checked ) && 43200 > ( time( ) - $current_theme->last_checked ); if( $time_not_changed ) return false; + // Update last_checked for current to prevent multiple blocking requests if request hangs + $current_theme->last_checked = time(); + update_option( 'update_themes', $current_theme ); + $themes = array( ); $themes['current_theme'] = $current_theme; foreach( (array) $installed_themes as $theme_title => $theme ) {