Timactive Posted January 30, 2013 Share Posted January 30, 2013 Bonjour, Voilà une petite matinée que j'essaie de comprendre comme a été pensé la stratégie de mise en cache bas niveau et j'avoue que c'est la première fois que je vois un tel procédé, alors j'aimerais comprendre le pourquoi du comment? Ayant l'habitude dans le cadre de mes différentes missions de mettre en place ce type de procédé, j'ai des différentes interrogations. J'ai réalisé mes tests en debug en utilisant memcache et prestashop 1.5.3 Mes intérrogations : 1- Dans la classe CacheMemcacheCore, méthode construct. On construit l'objet et nous chargons en même temps l'ensemble des clés présentes dans Memcache dans la variable static key, hum!! Appelé biensure à chaque requête cliente... J'ai vu que ce code avait été repris de Doctrine, mais j'avoue ne pas comprendre l'idée derrière côté performance. Pourquoi ne pas faire des simples appels à Memcache au lieu de passer par une couche intermédiaire? N'est ce pas un peu trop lourd de charger tout ca dans une variable static. Je pense réellement que les variables statics doivent être chargées à chaque demande et non chargé d'un seul coup. 1 Memcache public function __construct() { $this->connect(); $this->keys = array(); $all_slabs = $this->memcache->getExtendedStats('slabs'); foreach ($all_slabs as $server => $slabs) { if (is_array($slabs)) { foreach (array_keys($slabs) as $slab_id) { $dump = $this->memcache->getExtendedStats('cachedump', (int)$slab_id); if ($dump) { foreach ($dump as $entries) { if ($entries) $this->keys = array_merge($this->keys, array_keys($entries)); } } } } } } 2 ce code ne fonctionne pas ou plus avec les versions actuels de MemCache Il suffit de regarder les spécifications. $this->memcache->getExtendedStats('cachedump', (int)$slab_id) retourne seulement les clés, le ttl, et la taille. et non clé=>valeur comme attendu. Testé avec la version 2 et 3 des librairies php cliente. Deplus l'attribut keys est mal initialisé au lieu d'avoir $this->keys['clé_mem_cache'] = valeur nous avons $this->keys[0]="clé mem cache" Enfin on comprend mieux maintenant pourquoi l'utilisation de memcache allourdi plus, que si celui-ci était désactivé. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now