Zend Server e WordPress 3.x

Collaborando con Zend Italia, e con il buon Enrico, alla preparazione di un micro-benchmark su WordPress è emerso, tra le altre cose, che il CMS in questione non ama particolarmente il sistema di Page Cache dello Zend Server.

Questo avviene perchè il primo, non potendo comunicare al secondo la modifica di una pagina (ad esempio dovuta ad un commento), riceve dal sistema di caching sempre e solo lo stesso contenuto. Dopo un paio d’ore di studio delle API dello Zend Server e delle action di WordPress è emerso un simpatico snipplet che permette di usare direttamente il CMS in situazioni di grosso carico di lavoro senza doversi appoggiare a plugin di caching (come ad esempio il pur sempre ottimo W3 Total Cache) e lasciando quindi l’installazione di WordPress la più pulita possibile.

Qui di seguito il proof-of-concept (funzionante) del codice in questione.

add_action('comment_post', 'clear_zend_cache');
function clear_zend_cache($comment_id, $comment_status)
{
  //if the comment is approved clear the cache
  if ($comment_status == 1) 
  {
    $comment = get_comment($comment_id);

    // use the Zend Server Page Cache API
    if (function_exists('page_cache_remove_cached_contents'))
    {
      page_cache_remove_cached_contents(get_permalink($comment.post_id));
    }
  }
}

Il seguente snipplet va copiato nel file functions.php del proprio tema e si occupa di cancellare la cache di una pagina quando un utente lascia un commento.

Come si può ben vedere lo script in questione è limitato ai commenti, ma si potrebbe estenderne il funzionamento anche alle action relative alle modifiche di un post da backend o addirittura utilizzare il Data Cache system per estendere, più o meno come fa W3 Total Cache, il sistema di caching standard di WordPress relativo ai risultati delle query.

Happy hacking :)

ciuaz

3 responses

  1. Ottimo esempio, ma sai quanto è utilizzato oggi zend server?
    A meno di non avere una macchina dedicata (dove poter caricare Zend Server o ngix :)) altre soluzioni alternative ad apache non si trovano

    Ciao

  2. Zend Server è abbastanza utilizzato nel mondo enterprise, sia per la gestione del caching e dell’opcode optimizer che per una mera questione di comodità di utilizzo (ambiente di test, staging e produzione sono sempre identici ed inoltre mette a disposizione una serie di tools per il debugging molto avanzati).

    Ha il difetto, come fai notare, di necessitare una macchina dedicata. Ma penso che, per siti ad alto traffico, avere un server dedicato sia (comunque) la base di partenza.

  3. Comunque tu lo consiglieresti?
    Oppure pensi che sia meglio configurarsi un web server con il minimo indispensabile (Apache,MySQL,PHP5,Memcache) e non appensantirlo con un application come Zend Server?

Comments are closed.