29-08-2009, 04:24 PM
Au niveau du cache OPCode, j'utilise APC, aucune configuration spéciale à appliquer, le tout se fait automatiquement.
Ca s'installe avec pecl : pecl install apc
Et il suffit de rajouter une ligne dans le php.ini : extension = apc.so
Pour les données, APC aussi. Tout est en objet, donc peu de modification à effectuer.
Par exemple, on utilise une classe de cache, là c'est pour l'exemple, sinon j'utilise Zend_Cache :
Ca s'installe avec pecl : pecl install apc
Et il suffit de rajouter une ligne dans le php.ini : extension = apc.so
Pour les données, APC aussi. Tout est en objet, donc peu de modification à effectuer.
Par exemple, on utilise une classe de cache, là c'est pour l'exemple, sinon j'utilise Zend_Cache :
Code PHP :
<?php
class cache
{
public function set( $k, $v = null, $ttl = 0 )
{
return apc_add( $k, $v, $ttl);
}
public function get( $k )
{
return apc_fetch( $k );
}
public function remove( $k )
{
return apc_delete( $k );
}
}
Ensuite je dispose de classes d'accès aux données.
Code PHP :
<?php
classe models_Users()
{
protected $_name = 'users';
protected $_primary = 'id';
private $_cache;
public function init()
{
$this->_cache = new cache();
}
public function getUserById( $id )
{
$cacheKey = 'models_Users_getUserById_' . $id;
if ( !($res = $this->_cache->get($cacheKey)) )
{
// Requete SQL ou autre
$res = $this->find( $id )->current();
$this->_cache->set( $res, $cacheKey );
}
return $res;
}
public function removeCache( $id )
{
$cacheKey = 'models_Users_getUserById_' . $id;
$this->_cache->remove($cacheKey)
}
}