WordPress.org

Plugin Directory

Changeset 182802 for memcached


Ignore:
Timestamp:
12/14/09 19:04:08 (4 years ago)
Author:
ryan
Message:

Add flush for single blog sites. Work better with WP. Props Denis de Bernardy.

Location:
memcached/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • memcached/trunk/object-cache.php

    r182784 r182802  
    44Plugin Name: Memcached 
    55Description: Memcached backend for the WP Object Cache. 
    6 Version: 2.0 
    7 Plugin URI: http://dev.wp-plugins.org/browser/memcached/ 
    8 Author: Ryan Boren 
    9  
     6Version: 2.0.1 
     7Plugin URI: http://wordpress.org/extend/plugins/memcached/ 
     8Author: Ryan Boren, Denis de Bernardy 
    109 
    1110Install this file to wp-content/object-cache.php 
     
    108107            $this->cache[$key] = $data; 
    109108            return true; 
     109        } elseif ( isset($this->cache[$key]) && $this->cache[$key] !== false ) { 
     110            return false; 
    110111        } 
    111112 
     
    113114        $expire = ($expire == 0) ? $this->default_expiration : $expire; 
    114115        $result = $mc->add($key, $data, false, $expire); 
    115         @ ++$this->stats['add']; 
    116         $this->group_ops[$group][] = "add $id"; 
    117  
    118         if ( false !== $result ) 
     116 
     117        if ( false !== $result ) { 
     118            @ ++$this->stats['add']; 
     119            $this->group_ops[$group][] = "add $id"; 
    119120            $this->cache[$key] = $data; 
     121        } 
     122 
    120123        return $result; 
    121124    } 
     
    179182 
    180183    function flush() { 
    181         return true; 
     184        // Don't flush if multi-blog. 
     185        if ( function_exists('is_site_admin') || defined('CUSTOM_USER_TABLE') && defined('CUSTOM_USER_META_TABLE') ) 
     186            return true; 
     187 
     188        $ret = true; 
     189        foreach ( array_keys($this->mc) as $group ) 
     190            $ret &= $this->mc[$group]->flush(); 
     191        return $ret; 
    182192    } 
    183193 
     
    208218 
    209219    function get_multi( $groups ) { 
    210     /* 
    211     format: $get['group-name'] = array( 'key1', 'key2' ); 
    212     */ 
    213     $return = array(); 
     220        /* 
     221        format: $get['group-name'] = array( 'key1', 'key2' ); 
     222        */ 
     223        $return = array(); 
    214224        foreach ( $groups as $group => $ids ) { 
    215225            $mc =& $this->get_mc($group); 
     
    238248 
    239249    function key($key, $group) {     
    240         global $blog_id; 
    241  
    242250        if ( empty($group) ) 
    243251            $group = 'default'; 
    244252 
    245         if (false !== array_search($group, $this->global_groups)) 
    246             $prefix = ''; 
     253        if ( false !== array_search($group, $this->global_groups) ) 
     254            $prefix = $this->global_prefix; 
    247255        else 
    248             $prefix = $blog_id . ':'; 
     256            $prefix = $this->blog_prefix; 
    249257 
    250258        return preg_replace('/\s+/', '', "$prefix$group:$key"); 
     
    334342            $buckets = $memcached_servers; 
    335343        else 
    336             $buckets = array('default' => array('127.0.0.1:11211')); 
     344            $buckets = array('127.0.0.1'); 
     345 
     346        reset($buckets); 
     347        if ( is_int(key($buckets)) ) 
     348            $buckets = array('default' => $buckets); 
    337349 
    338350        foreach ( $buckets as $bucket => $servers) { 
     
    340352            foreach ( $servers as $server  ) { 
    341353                list ( $node, $port ) = explode(':', $server); 
     354                if ( !$port ) 
     355                    $port = ini_get('memcache.default_port'); 
     356                $port = intval($port); 
     357                if ( !$port ) 
     358                    $port = 11211; 
    342359                $this->mc[$bucket]->addServer($node, $port, true, 1, 1, 15, true, array($this, 'failure_callback')); 
    343360                $this->mc[$bucket]->setCompressThreshold(20000, 0.2); 
    344361            } 
    345362        } 
     363 
     364        global $blog_id, $table_prefix; 
     365        $this->global_prefix = ( function_exists('is_site_admin') || defined('CUSTOM_USER_TABLE') && defined('CUSTOM_USER_META_TABLE') ) ? '' : $table_prefix; 
     366        $this->blog_prefix = ( function_exists('is_site_admin') ? $blog_id : $table_prefix ) . ':'; 
     367 
     368        $this->cache_hits =& $this->stats['get']; 
     369        $this->cache_misses =& $this->stats['add']; 
    346370    } 
    347371} 
  • memcached/trunk/readme.txt

    r182800 r182802  
    77 
    88== Description == 
    9 Memcached Object Cache provides ia persistent backend for the WordPress object cache. A memcached server and the PECL memcached extension are required. 
     9Memcached Object Cache provides a persistent backend for the WordPress object cache. A memcached server and the PECL memcached extension are required. 
    1010 
    1111== Installation == 
Note: See TracChangeset for help on using the changeset viewer.