2008-08-31 7 views
9

Existe-t-il un moyen simple de mettre en cache MySQL queries dans PHP ou, à défaut, existe-t-il un petit ensemble de classe que quelqu'un a écrit et rendu disponible qui le fera? Je peux mettre en cache une page entière mais cela ne fonctionnera pas car certaines données changent mais d'autres non, je veux mettre en cache la partie qui ne le fait pas.Mise en cache des requêtes MySQL

Répondre

1

Je pense que la taille du cache de requête est 0 par défaut, ce qui est hors tension. Modifiez votre fichier my.cnf pour lui donner au moins quelques mégaoctets. Pas de modifications PHP nécessaires :)

+0

Lorsque j'installe mysql sur de nombreux serveurs Ubuntu/Debian et que je vérifie les configurations, la mise en cache est activée par défaut. 'query_cache_limit = 1M' et' query_cache_size = 16M ' – shgnInc

1

Il peut être complètement exagéré pour ce que vous essayez, mais jetez un oeil à eAccelerator ou memcache. Si vous avez des requêtes qui changeront régulièrement et des requêtes qui ne le seront pas, vous ne voudrez peut-être pas que toutes vos requêtes db soient mises en cache pour la même durée par mysql. Les moteurs de mise en cache comme ci-dessus vous permettent de décider, par requête, combien de temps les données doivent être mises en cache. Donc, si vous avez des données dans votre en-tête qui changeront rarement, vous pouvez vérifier si elles sont actuellement dans le cache - si c'est le cas, renvoyez-le, sinon faites la requête et mettez-le dans le cache avec une durée de vie N N secondes, chaque chargement de page extrait les données du cache sans s'approcher de MySQL. Vous êtes alors libre de tirer vos autres données "en direct" de la base de données au fur et à mesure des besoins, en contournant le cache.

4

Vous pouvez utiliser Zend Cache pour mettre en cache les résultats de vos requêtes, entre autres.

0

Je recommanderais la route de mise en cache de page entière. Si certaines données changent, placez simplement des jetons/espaces réservés à la place des données dynamiques. Cachez la page entière avec ces jetons en place, puis postez les jetons pour les données mises en cache pour les jetons. Ainsi, vous avez maintenant une page en cache qui contient du contenu dynamique.

Questions connexes