Skip to content


Accélérer l'affichage de vos pages PHP avec Memcached sous Debian Squeeze partie I

Installation de Memcached, php5-memcached et php5-memcache

Nous installons en réalité deux paquets : memcached, php5-memcached et php5-memcache

# apt-get install memcached php5-memcached php5-memcache

Rien de particulier n'est à remarquer dans les fichiers de ces deux paquets. En effet aucune configuration particulière n'est demandée.

Ajouter l'extension Memcached Object Cache

Vous pouvez le trouver sur : http://wordpress.org/extend/plugins/memcached/

Le souci que je rencontre est lors de son activation celui-ci génère une erreur fatale :

PHP Fatal error:  Cannot redeclare class wp_object_cache in /var/www/blog/wp-content/plugins/memcached/object-cache.php on line 88, referer: http://monblog.system-linux.net/blog/wp-admin/plugins.php?error=true&plugin=memcached%2Fobject-cache.php&_error_nonce=5c33be0af7

Or il semble que l'extension qui ne contient qu'une page PHP, déclare une classe WP_Object_Cache qui semble être déjà déclarée dans le fichier wp-includes/cache.php.

Cette page cache.php est appelée par wp-includes/load.php qui pourtant fait le choix entre la page cache.php et object-cache.php ! Mais en y regardant de plus près il s'avère que load.php semble chercher object-cache.php dans wp-content. Ne le trouvant pas elle charge cache.php qui pour le coup rend in-activable la nouvelle extension.

/**
 * Starts the WordPress object cache.
 *
 * If an object-cache.php file exists in the wp-content directory,
 * it uses that drop-in as an external object cache.
 *
 * @access private
 * @since 3.0.0
 */
function wp_start_object_cache() {
        global $_wp_using_ext_object_cache;
 
        $first_init = false;
 if ( ! function_exists( 'wp_cache_init' ) ) { if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) { require_once ( WP_CONTENT_DIR . '/object-cache.php' ); $_wp_using_ext_object_cache = true; } else { require_once ( ABSPATH . WPINC . '/cache.php' ); $_wp_using_ext_object_cache = false; }
                $first_init = true;
        } else if ( !$_wp_using_ext_object_cache && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
                // Sometimes advanced-cache.php can load object-cache.php before it is loaded here.
                // This breaks the function_exists check above and can result in $_wp_using_ext_object_cache
                // being set incorrectly.  Double check if an external cache exists.
                $_wp_using_ext_object_cache = true;
 
        }
 
        // If cache supports reset, reset instead of init if already initialized.
        // Reset signals to the cache that global IDs have changed and it may need to update keys
        // and cleanup caches.
        if ( !$first_init && function_exists('wp_cache_reset') )
                wp_cache_reset();
        else
                wp_cache_init();
 
        if ( function_exists( 'wp_cache_add_global_groups' ) ) {
                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-po$
                wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
        }
}

 

La solution est d'installer cette extension sans l'activer puis de copier wp-content/plugins/object-cache.php dans wp-content. Ensuite à vous de voir si vous désinstallez celle-ci !?

cp wp-content/plugins/object-cache.php wp-content/

Si l'execution de memcached est verbeux alors vous aurez des log de cette forme :

30: going from conn_parse_cmd to conn_mwrite
30: going from conn_mwrite to conn_new_cmd
30: going from conn_new_cmd to conn_waiting
30: going from conn_waiting to conn_read
30: going from conn_read to conn_parse_cmd
<30 get wp_:post_tag:24
> FOUND KEY wp_:post_tag:24
>30 sending key wp_:post_tag:24
>30 END
30: going from conn_parse_cmd to conn_mwrite
30: going from conn_mwrite to conn_new_cmd
30: going from conn_new_cmd to conn_waiting
30: going from conn_waiting to conn_read
30: going from conn_read to conn_parse_cmd
<30 get wp_:post_tag:25
> FOUND KEY wp_:post_tag:25
>30 sending key wp_:post_tag:25
>30 END

Ce qui montre que votre blog WordPress est bien connecté à memcached... Cependant j'ai eu quelques soucis quant à l'affichage de certaines pages... Et quelques lenteurs... 🙁

Elles ne contenaient plus la partie "Articles récents", etc. Ce qui est assez gênant, je suis en train d'investiguer ! 🙂

Pour ma part j'ai donc désactivé cette fonctionnalité, afin de ne pas pénaliser mes visiteurs. 😉

Print Friendly, PDF & Email

Posted in Debian, Important, Linux, Technique, Toutes. Tagged with , , , , .

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.