Jump to content

memcache et cache bas niveau Prestashop


Recommended Posts

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é.

post-406677-0-44764000-1359544801_thumb.png

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...