2009-09-18 9 views
3

J'ai permis l'extension memcache pour mon serveur localserver PHP Apache (XAMPP)comment utiliser Memcache pour accélérer le PHP?

mais je ne sais pas comment l'utiliser pour accélérer mes scripts PHP écriture est-elle le code suivant dans le haut de chaque page I vouloir accélérer est suffisant? ou je devrais faire autre chose?

 /* procedural API */ 
     $memcache_obj = memcache_connect('127.0.0.1', 11211); 

     /* OO API */ 
     $memcache = new Memcache; 
     $memcache->connect('127.0.0.1', 11211); 

phpinfo() présente les détails suivants

 memcache support enabled 
     Active persistent connections 0 
     Version 2.2.4-dev 
     Revision $Revision: 1.99 $ 

Merci de

Répondre

6

Vous pourrait veulent envisager d'utiliser memcache_pconnect() à la place, mais il y a des avantages et des inconvénients à cela.

Vous avez l'installation de memcache. Cela n'accélérera rien à moins que vous l'utilisiez pour quelque chose. Vous pouvez mettre en cache quatre éléments de base:

  1. Chargement de données à partir d'un fichier;
  2. Chargement de données à partir d'une base de données;
  3. Chargement de données à partir d'un hôte distant; et
  4. Stocker le résultat de quelque chose qui prend beaucoup de temps à calculer.

Jusqu'à ce que vous l'utilisiez pour quelque chose, il ne fera rien.

2

Vous devez effectuer un profilage de base de votre code et des algorithmes qu'il utilise. Memcache est comme ajouter du sel à une recette: vous devez l'ajouter à la bonne partie ou vous ne bénéficiez pas de l'avantage et vous gênez à la place.

En PHP, il existe plusieurs types de mise en cache qui peuvent améliorer les performances de vos pages Web, et memcache n'en est qu'une. Si vous avez beaucoup de requêtes identiques, vous pouvez activer le cache de requête dans votre base de données. Si vous avez de nombreuses pages qui se connectent avec peu de trafic de requêtes, vous bénéficieriez de la mise en pool des connexions (ce qui met en cache la connexion TCP) et de la mise en cache des threads dans la base de données. Si vous jetez beaucoup de données, en particulier des chaînes et de grands tableaux ou objets, vous pouvez commencer à penser à des références et mettre à jour votre manipulation de chaîne qui n'implique pas de recopie inutile (par exemple, la concaténation de chaînes en boucle est onéreuse - ajoutez-les à un tableau et implosez-le une fois à la fin). Cela peut être une grande performance et l'amélioration de la mémoire.

Si vous avez beaucoup de requêtes qui récupèrent les mêmes informations encore et encore dans une page, vous devez améliorer votre couche de stockage de données. Cela vous permettra de faire une requête pour obtenir une ligne, puis de réutiliser les données sur toute la page au lieu de les récupérer à nouveau. (Ceci est généralement la meilleure raison de passer d'un hotch-potch de SQL arbitraire à une couche de persistance d'objet.) Notez que cela peut impliquer un re-architecte considérable de l'application. Vous pouvez ajouter la mise en cache des données d'objet à votre couche d'objet - ceci bénéficiera tout qui utilise ce genre d'objet, ce qui peut être une grande victoire. C'est un bon point pour memcache, et le code de l'application n'a même pas besoin de le savoir. Faites juste attention aux durées de vie des données et si ou comment elles sont mises à jour tôt.

Si vous avez beaucoup de pages qui font la même requête un peu coûteuse (même par proxy via une couche d'accès aux données), vous pouvez mettre en cache cela pendant quelques secondes.Il ne doit pas être à memcache, mais c'est un bon choix. Enfin, si vous avez beaucoup de fichiers qui ne changent jamais, vous pouvez utiliser un serveur séparé qui ne gère que des fichiers statiques. Cela donne à votre environnement d'exécution plus de place pour exécuter du code et vous pouvez régler les serveurs de fichiers statiques pour qu'ils soient efficaces lors du retour rapide des fichiers. Cela peut être une grande victoire pour la perception de la performance du site.

IMO, mise en cache devrait améliorer plutôt que activer votre application.

Questions connexes