Vous êtes sur la page 1sur 11

Acclrer la

gnration de vos
pages PHP avec
l'extension APC
Par Nanocom
www.openclassrooms.com
Licence Creative Commons 6 2.0
Dernire mise jour le 3/08/2011
Sommaire
2 Sommaire ...........................................................................................................................................
3 Acclrer la gnration de vos pages PHP avec l'extension APC .....................................................
3 Prsentation de l'extension APC .......................................................................................................................................
4 Installation sous Linux .......................................................................................................................................................
6 Installation sous Windows .................................................................................................................................................
8 Configuration de l'extension ..............................................................................................................................................
9 Le cache utilisateur ...........................................................................................................................................................
10 Partager .....................................................................................................................................................................................................................
2/11
www.openclassrooms.com
Acclrer la gnration de vos pages PHP avec
l'extension APC
Par Nanocom
Mise jour : 03/08/2011
Difficult : Intermdiaire Dure d'tude : 30 minutes
Ce tutoriel prsente rapidement le moyen le plus simple d'acclrer la gnration de ses scripts PHP : le "cache d'OPCodes".
Nous verrons comment installer l'extension APC de PHP et comment la configurer, et nous dcouvrirons son "cache utilisateur".
La plupart des hbergements mutualiss ne proposent pas cette extension ( ). Si vous voulez l'utiliser, il vous faut
soit demander votre hbergeur de l'installer, soit disposer de votre propre serveur ddi.
Sommaire du tutoriel :
Prsentation de l'extension APC
Installation sous Linux
Installation sous Windows
Configuration de l'extension
Le cache utilisateur
Prsentation de l'extension APC
L'extension APC (Alternative PHP Cache) est un systme de cache avanc permettant d'acclrer la gnration de vos pages
PHP et une conomie de travail sur le serveur. C'est ce que l'on appelle un cache d'OPCodes.
Pour faire simple, l'OPCode est le code intermdiaire compil par PHP pour excuter vos pages. Un cache d'OPCodes permet donc
de ne plus "compiler" systmatiquement chaque page appele en fournissant une page dj compile et stocke dans la mmoire
vive (RAM) de votre serveur.
Par exemple, admettons que j'excute ce code :
Code : PHP
<?php
$variable = 'BONJOUR';
echo $variable;
?>
L'OPCode gnr ressemblera quelque chose du genre :
Code : Autre
ASSIGN !0, 'BONJOUR'
ECHO $0
Sommaire 3/11
www.openclassrooms.com
Puisque la mmoire vive d'un ordinateur est vide lorsqu'on l'teint, le cache stock par APC sera vid chaque
redmarrage du serveur.
En plus de mettre en cache l'OPCode de vos pages, APC fournit un "cache utilisateur" prsent dans la dernire partie de ce tuto.
Cette extension n'est pas intgre nativement PHP, voyons donc maintenant comment l'installer et la configurer sur votre
serveur.
Installation sous Linux
Ce tutoriel a t test sous Ubuntu 11.04 et devrait fonctionner pour les versions antrieures.
Il vous suffit d'installer le paquet php-apc :
Code : Console
sudo apt-get install php-apc
Une fois l'installation termine, vous devez modifier le php.ini pour activer l'extension : le php.ini se trouve par dfaut dans
/etc/php5/apache2/php.ini.
Ouvrez donc ce fichier en mode administrateur avec votre diteur de texte prfr.
Pour les novices, tapez :
Code : Console
sudo gedit /etc/php5/apache2/php.ini
ou pour ceux qui n'ont pas gedit :
Code : Console
sudo nano /etc/php5/apache2/php.ini
Et cherchez l'endroit du fichier o il est crit Module settings.
Juste avant ce Module settings, crivez extension=apc.so : cela permet d'indiquer Apache qu'il doit utiliser cette
extension.
Et juste aprs le Module settings, crivez
[APC] apc.enabled=1
Vous devez donc avoir un php.ini qui ressemble a :
Acclrer la gnration de vos pages PHP avec l'extension APC 4/11
www.openclassrooms.com
Redmarrez apache (en entrant la commande /etc/init.d/apache2 restart , ou mieux : un
sudo service apache2 restart ) et faites un phpinfo() ; vous devriez voir ces informations affiches quelque
part :
Acclrer la gnration de vos pages PHP avec l'extension APC 5/11
www.openclassrooms.com
Si c'est le cas, l'extension est bien installe et active.
Vous pouvez donc passer la phase de configuration, dcrite ci-aprs.
Installation sous Windows
Pour installer l'extension sous Windows, c'est un poil compliqu : avant, on pouvait rcuprer le fichier dll directement sur le site
de PHP ddi (pecl4win.php.net), mais celui-ci est ferm depuis pas mal de temps. Maintenant, il faut se dbrouiller pour trouver
la DLL sur internet. Un dveloppeur de PHP fournit heureusement une page de tlchargement d'extensions PHP prcompiles
Acclrer la gnration de vos pages PHP avec l'extension APC 6/11
www.openclassrooms.com
pour windows : http://downloads.php.net/pierre/.
Sur ce site, on vous propose plusieurs liens pour APC. Vous devez choisir le bon fichier en fonction de votre version de PHP (par
exemple, php_apc-3.0.19-5.2-Win32-VC6-x86.zip est une version d'APC pour PHP 5.2). Je ne vous conseille pas de fichier en
particulier, tant donn que cette page est amene changer rgulirement. Faites un phpinfo() et regardez dans les lignes
Compiler et Architecture, par exemple : MSVC6 (Visual C++ 6.0) et x86. Basez-vous sur ces informations pour choisir le bon ficher
DLL, et si a ne marche pas, n'hsitez pas essayer avec d'autres DLL.
Ensuite, copiez ce fichier dans le dossier contenant les extensions de PHP.
Si vous tes sous WAMP, vous pouvez y accder en allant dans son dossier d'installation. Pour ce faire, allez dans le
dossier www, accdez au dossier parent, puis rendez-vous dans le dossier bin/php/php-5.x.x/ext/.
Ensuite, rendez-vous dans votre fichier de configuration php.ini : si vous utilisez WAMP, faites un clic gauche sur l'icne dans la
barre des tches, survolez PHP, et cliquez sur php.ini.
Cherchez l'endroit du fichier o les extensions sont actives, et mettez-vous juste la dernire ligne avant
Module Settings. Cela ressemble a :
Ecrivez ceci :
Code : Autre
extension=php_apc.dll
Puis crivez ceci juste en dessous du Module settings :
Code : Autre
[APC]
apc.enabled=1
Vous venez d'activer l'extension.
Maintenant, redmarrez tous les services, et faites un phpinfo() : vous devriez voir affich quelque part ces informations :
Acclrer la gnration de vos pages PHP avec l'extension APC 7/11
www.openclassrooms.com
Si c'est le cas, l'extension fonctionne !
Vous pouvez maintenant passer la phase de configuration.
Configuration de l'extension
Configurons maintenant votre extension APC frachement installe.
La documentation PHP sur APC nous dit que :
Acclrer la gnration de vos pages PHP avec l'extension APC 8/11
www.openclassrooms.com
Citation : Documentation PHP
Il y a deux dcisions importantes que vous devez faire. D'abord, la quantit de mmoire partage que vous voulez allouer
APC et ensuite, si vous voulez qu'APC vrifie si un fichier a t modifi chaque demande.
Vous devez donc dcider de combien de mmoire vive dispose l'extension. Pour la dfinir, rendez-vous dans votre php.ini
l'endroit o vous avez crit apc.enabled=1, et crivez la suite :
Code : Autre
apc.shm_size={mmoire en MB}
La taille par dfaut est de 30 Mo : je vous conseille de l'augmenter. Tout dpend de la RAM dont vous disposez sur votre
serveur, mais si vous en avez beaucoup, vous pouvez mettre plus de 100 Mo sans problme.
La seconde option paramtrer permet de dfinir si APC doit vrifier chaque gnration de page que la page PHP mise en
cache n'a pas chang : le paramtre dfinir est apc.stat :
Citation : Documentation PHP
Par dfaut, APC vrifie le script chaque demande pour voir s'il a t modifi ou non.
S'il a t modifi, il sera compil nouveau et la nouvelle version sera mise en cache.
En dsactivant cette option, aucune vrification n'aura lieu. Cela signifie que si vous voulez activer les modifications, vous
devez redmarrer le serveur web.
Sur un serveur de production o vous modifiez rarement le code, le fait de dsactiver cette option permet de gagner en
performances de manire significative.
Je n'aurais pas mieux dit . En gros, si vous modifiez trs rgulirement votre code, mettez un apc.stat=1. Si vous tes sur
un serveur de production et que vos pages PHP sont modifies peu souvent, mettez 0, cela amliorera les performances.
Votre php.ini doit donc ressembler peu prs ceci :
Code : Autre
[APC]
apc.enabled=1
apc.shm_size=128
apc.stat=1
Je vous laisse dcouvrir comme des grands les autres options de configuration d'APC dans la doc de PHP. Ces options sont
facultatives, mais il se peut que vous en ayez besoin un jour.
Vous pouvez aussi obtenir plusieurs informations sur l'extension en tlchargeant la dernire version d'APC, et en mettant sur
votre serveur web la page apc.php situe dans l'archive que vous venez de tlcharger : vous pourrez ainsi voir la quantit de
mmoire utilise et disponible pour l'extension, ainsi que plusieurs autres informations pratiques.
Le cache utilisateur
Le cache utilisateur est un des gros points fort de l'extension APC.
Vous devez normalement savoir que pour mettre en cache une information en PHP, on utilise gnralement un fichier .txt : ce type
de fichier est stock sur le disque dur, le temps d'accs au fichier est donc relativement long.
APC, lui, permet de mettre en cache des variables directement dans la mmoire vive de votre serveur, ce qui offre des temps
d'accs l'information beaucoup plus faibles, vos scripts s'excutent donc plus rapidement si vous l'utilisez .
Son utilisation est trs simple, vous disposez en effet de trois fonctions : apc_add, apc_fetch, et apc_delete.
La premire permet de mettre en cache une variable dans la RAM ; la deuxime, de rcuprer une valeur mise en cache
Acclrer la gnration de vos pages PHP avec l'extension APC 9/11
www.openclassrooms.com
prcdemment ; et la troisime, d'en supprimer une.
Exemple :
Code : PHP
<?php
$nombreMembres = 200000; // Par exemple, le nombre de membres du
site
apc_add('nombreMembres', $nombreMembres); // On met en cache la
variable
echo apc_fetch('nombreMembres'); // Affiche 200000
apc_delete('nombreMembres'); // On supprime la variable du cache
(facultatif)
?>
On peut imaginer crer par exemple un module de mise en cache bas sur ces fonctions (le cache serait ainsi accessible
directement en mmoire).
La diffrence entre apc_add() et apc_store() rside dans le fait que apc_add() met la variable en cache
uniquement si elle ne s'y trouve pas dj, alors que apc_store() crase les ventuelles donnes mises en cache
prcdemment.
Concernant la fonction apc_cache_info(), je vous laisse la dcouvrir dans la doc de PHP.
Le temps de gnration de vos pages devrait maintenant dcrotre significativement sur votre site, vos scripts tant mis en cache
dans la RAM de votre serveur.
Le gain de temps peut aller jusqu' 50% selon les pages !
noter que PHP6 devrait intgrer un tel systme de cache nativement.
Liens
La doc
Tutoriel sur developpez.com
Upload de fichiers via l'extension APC (Site du Zr0)
Pour finir, il existe d'autres systmes semblables (par exemple eAccelerator et xCache), qui ont des performances comparables.
Partager

Ce tutoriel a t corrig par les zCorrecteurs.
Acclrer la gnration de vos pages PHP avec l'extension APC 10/11
www.openclassrooms.com

Vous aimerez peut-être aussi