APC ( Alternative PHP Cache )

APC est un systéme de cache opcode , permet entre autre , de ne pas refaire la boucle complète langage php => langage machine ect ... Ce systéme de de cache ,n'est pas encore disponible en natif dans php5 , mais devrait l'être pour php6 ...

Cependant , il est disponible , via pear ... alors pourquoi s'en priver ... Nous allons voir comment l'installer , puis l'utiliser simplement ...

Installation :

Nous partons du principe ou utilisez les paquets de votre distribution pour apache2 et php5.

Prérequis:

Il vous faut absoluement cette liste de paquets (Note , je suis ici sous débian lenny )

apt-get install apache2 libapache2-mod-php5 php-pear php5-dev make apache2-prefork-dev

Enfin , installer le module pecl :

pecl install apc

A la question :

 1. Use apxs to set compile flags (if using APC with Apache)? : yes

1-1, 'all', 'abort', or Enter to continue:

Taper Enter ..

A la fin de l'installation , vous devez avoir ces quelques lignes :

Build process completed successfully
Installing '/usr/lib/php5/20060613+lfs/apc.so'
install ok: channel://pecl.php.net/APC-3.0.19
configuration option "php_ini" is not set to php.ini location
You should add "extension=apc.so" to php.ini

Qui vous informent que l'installation s'est bien passé , et qu'il ne vous reste plus qu'à ajouter la ligne :

extension=apc.so

Dans votre php.ini ...

modification du php.ini

Editez votre fichier de configuration /etc/php5/apache2/php.ini

vim /etc/php5/apache2/php.ini

Et ajouter la ligne extension=apc.so à la fin du fichier

Vérification

Relancer apache

/etc/init.d/apache2 restart

Pour vérifier que le module APC soit bien pris en compte , éditez un fichier info.php à la racine de votre serveur , et mettez y ces lignes que vous devez déjà certainement connaître :

<?php

echo phpinfo();

?>

Aller sur ce petit script avec votre navigateur , exemple : http://<ip de mon server>/info.php

Et vous devez voir apparaitre sur la page , la section suivante :

Voilà apc est installé sur votre machine ...

Edite du 26-01-2009:

Une autre méthode d'installation est possible , afin d'avoir la derniere version d'apc ,

1:On récupère la dernière version sur le site de pecl

Au moment ou je vous parle , la version est : 3.1.2 On place l'archive dans le répertoire /usr/local/src Puis nous le décompactons .

cd /usr/local/src/
tar xzf APC-3.1.2.tgz
rm APC-3.1.2.tgz
cd APC-3.1.2/

2:Compilation et installation :

Nous allons creer un fichier de configuration my_configure

vim my_configure

Voici le contenu :

#!/bin/sh

phpize
  ./configure \
          --enable-apc-mmap \
          --with-apxs2=/usr/local/bin/apxs \

On le rend executable :

chmod 777 my_configure

Puis on lance la compilation suivie de l'installation .

./my_configure
make
make install

Toujours vérifier que l'extension est active dans le php.ini comme expliqué plus haut

Puis nous redémarrons apache ... et voilà ...

Note: il est possible d'accéder à une sorte de page d'information avec graph , et d'administration en copiant le fichier apc.php à un endroit accessible par le serveur web .

Fin de l'edite

Utilisation

Chacun trouvera l'utilisation qu'il souhaite en faire en fonction de l'application développer , voici la liste des fonctions disponibles :

Mettre une variable en cache


if( empty(apc_fetch('foo')))
{
     $value  = calculComplexe();
     $ttl       =  600;

     apc_add('foo',$value,$ttl);
}

var_dump(apc_fetch('foo'));

function calculComplexe()
{
   //calcul compliqué qui génére de gros tableaux temporaires .. 

  return $result;
}

Ici , la fonction calculComplexe() n'est appelé que si le resultat n'est pas présent dans le cache , sachant que la variable mise en cache avec la clef 'foo' est réinitialiser toutes les 6 minutes ...

ttl à 600 secondes ..

Conclusion

Voilà pour cette première présentation rapide , n'hésitez pas à parcourir la documentation pour adapter l'utilisation d'APC à votre cas ..