Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Utiliser APC cache PHP - Partie 2

Par Laurent PHILIBERT Publié le 22/10/2015 à 15:57:57 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Rappel : Qu'est ce qu'APC et à quoi ça sert ?

Comme je l'avais expliqué dans la partie 1, APC cache (Alternative PHP Cache) est un plugin de cache en PHP. Il s'agit d'un OPCode qui permet d'optimiser les performances de PHP et lancer les scripts plus efficacement. Veuillez suivre ce lien pour installer APC Cache : https://www.supinfo.com/articles/single/609-utiliser-apc-cache-php-partie-1

Stocker un objet

Une fois que APC php est installé, vous pouvez dorénavant stocker des objets en utilisant la fonction apc_store().

			apc_store([apc_id], [apc_value]);
		

Comme le nom l'indique, apc_id sera l'identifiant de l'objet apc passé en cache. Vous devez obligatoirement passer un id afin de pouvoir retrouver votre objet. Cet id peut être une chaine de caractères ou un entier. Si vous avez plusieurs objets à passer en cache, je vous conseille vivement d'y mettre (un préfixe suivi d')un timestamp ou un unique id ( uniqueid() ). La valeur apc_value peut être de n'importe quel type. Cependant, il faut savoir qu'APC cache a été optimisé pour des entiers, d'où l'existence de fonctions telles qu'apc_inc ou apc_dec qui permettent d'incrémenter ou décrémenter la valeur de votre objet APC.

Par ailleurs, vous pouvez utiliser la fonction apc_fetch pour vérifier la valeur mise en cache. Pour cela, vous devez spécifier l'id de l'objet :

			var_dump(apc_fetch([apc_id]));
		

Récupérer les objets en cache

Afin de récupérer les objets en cache, vous devez utiliser APC Iterator. Pour cela, vous devez spécifier dans le header dans votre fichier .php l'utilisation de l'objet APC Iterator :

			use \APCIterator;
		

Une fois spécifié, vous devez boucler sur un nouvel appel d'un objet pour pouvoir récupérer toutes les valeurs passées en cache :

			foreach (new APCIterator('user') as $oApc) {
				var_dump($oApc['value']);
			}
		

Cette petite partie de code nécessite sûrement un peu d'explications. Tout d'abord, il existe plusieurs type de caches : user et file. Dans notre cas, nous devons utiliser le type 'user' car nous ne stockons pas des fichiers et les variables sont spécifiques à notre utilisateur. Je vous invite à vous renseigner sur ces types de cache. Ensuite, afin de récupérer la valeur de la variable, nous devons spécifier l'index 'value' dans l'objet $oApc. Cela s'explique par le fait qu'APCIterator vous renvoie l'objet entier APC. Vous pouvez notamment retrouver la valeur de l'identifiant ainsi que d'autres informations telles que sa taille, son ttl (time to live) si vous en avez spécifié un, le timestamp de sa création, etc...

Si vous désirez voir toutes ces informations, vous pouvez effectuer le var_dump de la sorte, vous obtiendrez un grand tableau vous donnant toutes les informations relatives à l'objet apc :

			foreach (new APCIterator('user') as $oApc) {
				var_dump($oApc);
			}
		

Autres fonctions utiles

Je vous ai montré les fonctions principales permettant de stocker une variable/valeur en cache, de la fetcher ainsi que récupérer la/les valeur(s) passées en cache. Cependant, il exite d'autres fonctions qui servent tout autant, si vous stockez un entier dans l'objet apc.

Comme je vous l'ai dit précédemment, vous pouvez utiliser les fonctions apc_inc et apc_dec pour incrémenter ou décrémenter votre entier, cela peut servir pour mettre en place des compteurs ou autres :

			apc_inc([apc_id]);
			apc_dec([apc_id]);
		

De plus, vous pouvez passer en paramètre en plus un entier pour incrémenter/décrémenter la valeur initiale :

			apc_inc([apc_id], 5);
			apc_dec([apc_id], 2);
		

Sur la première ligne, la valeur initiale aura augmenté de 5. Sur la deuxième ligne, la valeur initiale aura décrémenté de 2.

Il existe également une autre fonction qui peut s'avérer très utile : l'update d'une valeur (un entier) dans le cache. Il s'agit de la fonction apc_cas. Il faut bien penser à spécifier la clé (ce qui est logique), la nouvelle valeur (logique également) mais aussi l'ancienne valeur.

			apc_cas([apc_id], [apc_old_value], [apc_new_value]);
		

Conclusion

Maintenant, vous pouvez utiliser apc pour passer des objets en cache dans vos scripts PHP. Je vous ai expliqué les rudiments cependant, APC Cache est très riche et je vous invite vivement à aller faire un tour du côté de la documentation afin d'en apprendre plus car une fois le principe bien assimilé, vous pourrez clairement améliorer les performances de vos scripts PHP et donc, laisser votre serveur respirer !

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels