WordPress.org

Make WordPress Core

Changeset 25289


Ignore:
Timestamp:
09/06/2013 06:09:24 PM (8 years ago)
Author:
wonderboymusic
Message:

Introduce wp_using_ext_object_cache() - mimic wp_suspend_cache_invalidation() and discourage direct access to $_wp_using_ext_object_cache, cleaning up importing of globals in functions and provides function to modify that global. Loads the packaged object cache when an external cache hasn't been loaded or doesn't contain wp_cache_init().

Fixes #21401.

Location:
trunk/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-cron.php

    r25001 r25289  
    2929// Uncached doing_cron transient fetch
    3030function _get_cron_lock() {
    31     global $_wp_using_ext_object_cache, $wpdb;
     31    global $wpdb;
    3232
    3333    $value = 0;
    34     if ( $_wp_using_ext_object_cache ) {
     34    if ( wp_using_ext_object_cache() ) {
    3535        // Skip local cache and force refetch of doing_cron transient in case
    3636        // another processs updated the cache
  • trunk/src/wp-includes/load.php

    r24581 r25289  
    371371
    372372/**
     373 * Access/Modify private global variable $_wp_using_ext_object_cache
     374 *
     375 * Toggle $_wp_using_ext_object_cache on and off without directly touching global
     376 *
     377 * @since 3.7.0
     378 *
     379 * @param bool $using Whether external object cache is being used
     380 * @return bool The current 'using' setting
     381 */
     382function wp_using_ext_object_cache( $using = null ) {
     383    global $_wp_using_ext_object_cache;
     384    $current_using = $_wp_using_ext_object_cache;
     385    if ( null !== $using )
     386        $_wp_using_ext_object_cache = $using;
     387    return $current_using;
     388}
     389
     390/**
    373391 * Starts the WordPress object cache.
    374392 *
     
    380398 */
    381399function wp_start_object_cache() {
    382     global $_wp_using_ext_object_cache, $blog_id;
     400    global $blog_id;
    383401
    384402    $first_init = false;
     
    386404        if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
    387405            require_once ( WP_CONTENT_DIR . '/object-cache.php' );
    388             $_wp_using_ext_object_cache = true;
    389         } else {
    390             require_once ( ABSPATH . WPINC . '/cache.php' );
    391             $_wp_using_ext_object_cache = false;
     406            if ( function_exists( 'wp_cache_init' ) )
     407                wp_using_ext_object_cache( true );
    392408        }
     409
    393410        $first_init = true;
    394     } else if ( !$_wp_using_ext_object_cache && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
     411    } else if ( ! wp_using_ext_object_cache() && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
    395412        // Sometimes advanced-cache.php can load object-cache.php before it is loaded here.
    396413        // This breaks the function_exists check above and can result in $_wp_using_ext_object_cache
    397414        // being set incorrectly. Double check if an external cache exists.
    398         $_wp_using_ext_object_cache = true;
    399     }
     415        wp_using_ext_object_cache( true );
     416    }
     417
     418    if ( ! wp_using_ext_object_cache() )
     419        require_once ( ABSPATH . WPINC . '/cache.php' );
    400420
    401421    // If cache supports reset, reset instead of init if already initialized.
     
    404424    if ( ! $first_init && function_exists( 'wp_cache_switch_to_blog' ) )
    405425        wp_cache_switch_to_blog( $blog_id );
    406     else
     426    elseif ( function_exists( 'wp_cache_init' ) )
    407427        wp_cache_init();
    408428
  • trunk/src/wp-includes/nav-menu.php

    r25196 r25289  
    477477 */
    478478function wp_get_nav_menu_items( $menu, $args = array() ) {
    479     global $_wp_using_ext_object_cache;
    480 
    481479    $menu = wp_get_nav_menu_object( $menu );
    482480
     
    505503
    506504    // Get all posts and terms at once to prime the caches
    507     if ( empty( $fetched[$menu->term_id] ) || $_wp_using_ext_object_cache ) {
     505    if ( empty( $fetched[$menu->term_id] ) || wp_using_ext_object_cache() ) {
    508506        $fetched[$menu->term_id] = true;
    509507        $posts = array();
  • trunk/src/wp-includes/option.php

    r25109 r25289  
    166166 */
    167167function wp_load_core_site_options( $site_id = null ) {
    168     global $wpdb, $_wp_using_ext_object_cache;
    169 
    170     if ( !is_multisite() || $_wp_using_ext_object_cache || defined( 'WP_INSTALLING' ) )
     168    global $wpdb;
     169
     170    if ( !is_multisite() || wp_using_ext_object_cache() || defined( 'WP_INSTALLING' ) )
    171171        return;
    172172
     
    405405 */
    406406function delete_transient( $transient ) {
    407     global $_wp_using_ext_object_cache;
    408 
    409407    do_action( 'delete_transient_' . $transient, $transient );
    410408
    411     if ( $_wp_using_ext_object_cache ) {
     409    if ( wp_using_ext_object_cache() ) {
    412410        $result = wp_cache_delete( $transient, 'transient' );
    413411    } else {
     
    444442 */
    445443function get_transient( $transient ) {
    446     global $_wp_using_ext_object_cache;
    447 
    448444    $pre = apply_filters( 'pre_transient_' . $transient, false );
    449445    if ( false !== $pre )
    450446        return $pre;
    451447
    452     if ( $_wp_using_ext_object_cache ) {
     448    if ( wp_using_ext_object_cache() ) {
    453449        $value = wp_cache_get( $transient, 'transient' );
    454450    } else {
     
    494490 */
    495491function set_transient( $transient, $value, $expiration = 0 ) {
    496     global $_wp_using_ext_object_cache;
    497 
    498492    $value = apply_filters( 'pre_set_transient_' . $transient, $value );
    499493
    500     if ( $_wp_using_ext_object_cache ) {
     494    if ( wp_using_ext_object_cache() ) {
    501495        $result = wp_cache_set( $transient, $value, 'transient', $expiration );
    502496    } else {
     
    971965 */
    972966function delete_site_transient( $transient ) {
    973     global $_wp_using_ext_object_cache;
    974 
    975967    do_action( 'delete_site_transient_' . $transient, $transient );
    976     if ( $_wp_using_ext_object_cache ) {
     968    if ( wp_using_ext_object_cache() ) {
    977969        $result = wp_cache_delete( $transient, 'site-transient' );
    978970    } else {
     
    10091001 */
    10101002function get_site_transient( $transient ) {
    1011     global $_wp_using_ext_object_cache;
    1012 
    10131003    $pre = apply_filters( 'pre_site_transient_' . $transient, false );
    10141004    if ( false !== $pre )
    10151005        return $pre;
    10161006
    1017     if ( $_wp_using_ext_object_cache ) {
     1007    if ( wp_using_ext_object_cache() ) {
    10181008        $value = wp_cache_get( $transient, 'site-transient' );
    10191009    } else {
     
    10591049 */
    10601050function set_site_transient( $transient, $value, $expiration = 0 ) {
    1061     global $_wp_using_ext_object_cache;
    1062 
    10631051    $value = apply_filters( 'pre_set_site_transient_' . $transient, $value );
    10641052
    1065     if ( $_wp_using_ext_object_cache ) {
     1053    if ( wp_using_ext_object_cache() ) {
    10661054        $result = wp_cache_set( $transient, $value, 'site-transient', $expiration );
    10671055    } else {
  • trunk/src/wp-includes/query.php

    r25287 r25289  
    19471947     */
    19481948    function get_posts() {
    1949         global $wpdb, $user_ID, $_wp_using_ext_object_cache;
     1949        global $wpdb, $user_ID;
    19501950
    19511951        $this->parse_query();
     
    19971997
    19981998        if ( !isset($q['cache_results']) ) {
    1999             if ( $_wp_using_ext_object_cache )
     1999            if ( wp_using_ext_object_cache() )
    20002000                $q['cache_results'] = false;
    20012001            else
Note: See TracChangeset for help on using the changeset viewer.