tutorial - systeme de cache php




Qu'est-ce qu'un cache bytecode et comment en utiliser un en PHP? (2)

Mais comment le faire?

Facile.
Tout d'abord, vous devez effectuer un profilage pour vous assurer que l'analyse de code est un goulot d'étranglement de votre site et que toutes les autres évidences telles que le stockage de données non optimisé, les algorithmes lents, l'exploration de données et les appels réseau ont été optimisées.

Le moyen le plus simple de déterminer si vous avez besoin d’un cache d’opcode est de placer cette ligne tout en haut de votre page la plus utilisée

$timer_start = microtime(1);

et cette ligne à la toute fin:

echo "Generated in ".(round((microtime(1) - $timer_start),4))." sec.";

Si le temps est supérieur à 0.01 , vous devez d'abord optimiser d'autres choses, car vous ne remarquerez aucun effet du cache d'opcode.

J'ai cherché sur le Web et j'ai appris que le code PHP pouvait être compilé pour améliorer les performances. Mais comment le faire? Puis-je compiler du code PHP procédural et orienté objet?


L'idée de base, lors de l'exécution d'un script PHP est en deux étapes:

  • Premièrement: le code PHP, écrit en texte brut, est compilé en opcodes
  • Ensuite: ces opcodes sont exécutés .


Quand vous avez un script PHP, tant qu'il n'est pas modifié, les opcodes seront toujours les mêmes; donc, la phase de compilation à chaque exécution du script est une perte de temps CPU.

Pour empêcher cette compilation redondante, vous pouvez utiliser certains mécanismes de mise en cache de l'opcode.

Une fois le script PHP compilé en opcodes, ceux-ci seront conservés dans la RAM - et directement utilisés en mémoire la prochaine fois que le script sera exécuté; empêcher la compilation d'être faite encore et encore.


Le cache d'opcode le plus utilisé est APC - Alternative PHP Cache :

Une fois que APC a été installé et configuré correctement, il n'y a rien à modifier dans votre code PHP: APC mettra en cache les opcodes, et c'est tout - le processus est totalement invisible pour votre application.





bytecode