Question

1)
Je comprends que je peux appeler ça

$memcache_obj = memcache_connect('memcache_host', 11211);

dans les fichiers d'en-tête de mon site sans incidence sur les pages qui n'utilisent pas memcache mais qu'en est-il de cette

$memcache->connect('127.0.0.1', 11211);

Cela devrait-il être appelé page par page?

2)
Et si le serveur ne dispose pas de suffisamment de mémoire pour écrire de nouveaux caches et que Memcache tente de stocker un cache?

3)
Je sais que les clés peuvent durer jusqu'à 30 jours, Existe-t-il un moyen de vider toutes les clés de la mémoire, ce qui est particulièrement utile pour la phase de test?

4)
Aussi, ce code, la première variable est en train de se connecter, donc par exemple si j'ai 5 sections sur une page qui ajoute / met à jour / supprime de memcache, dois-je exécuter cette connexion à chaque fois, ou est-il possible de se connecter une fois et de tout faire par chargement de page?

memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30)

5) Existe-t-il une fonction ou quelque chose à montrer, par exemple combien de mémoire est disponible et utilisée sur une page php?

Était-ce utile?

La solution

  1. oui, aucun appel réseau n'est fait jusqu'à ce qu'une tentative d'extraction, de suppression, etc., soit effectuée, il n'est donc pas gênant d'allouer l'objet au cas où il serait nécessaire. (EDIT: Je pensais à l'extension "memcached" ici, mais l'extension "memcache" ouvre en fait une connexion au serveur memcache, bien que le hit soit au plus négligeable.

  2. memcache supprimera les éléments les moins utilisés pour tenter de libérer de l'espace pour le nouvel objet

  3. $ memcache_obj- > flush ();

  4. ne doit se connecter qu'une seule fois par exécution de script. Il est donc plus facile de placer la connexion en haut de votre page ou dans un constructeur de classe.

  5. $ memcache_obj- > getStats () http: / /www.php.net/manual/en/function.memcache-getstats.php

Autres conseils

Jason a très bien répondu à vos questions, mais j’ai pensé ajouter quelques notes:

2) Notez que si vous essayez de stocker plus de 1 Mo (valeur par défaut) dans une clé, l’extension memcache renvoie une valeur FALSE. Il retournera également FALSE s'il ne peut pas écrire de clé pour une raison quelconque.

3) Les clés peuvent avoir une durée de vie supérieure à 30 jours (TTL). Ajoutez simplement la durée de vie à l'heure actuelle et utilisez-la comme durée de vie. En utilisant votre exemple d’appel, cela pourrait ressembler à ceci (codé par souci de clarté):

$ttl = 60*60*24*60; // 60 days
$newTTL = time()+$ttl;
memcache_set($memcache_obj, 'cache_key', 'some data', 0, $newTTL)

5) Si vous parlez de mémoire PHP, alors memory_get_usage () vous donnera ce que vous voulez. La mémoire Memcache est un peu plus difficile à trouver, mais l’appel getStats () vous permettra de démarrer dans la bonne direction.

  1. http://uk3.php.net/manual/en /function.memcache-connect.php suggère que memcache_connect () revient à instancier un Memcache et à appeler connect () dessus
  2. http://code.google.com/p/memcached / wiki / FAQ # What_is_memcached% 27s_cache ? "Si le serveur manque de mémoire, les dalles expirées sont d'abord remplacées, puis les dalles non utilisées les plus anciennes passent ensuite."
  3. Redémarrez l'instance memcached ou appelez flush , qui invalidera tous les éléments de cache sur le serveur
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top