Recherche…
Remarques
Mise en cache à l'aide de memcache
Memcache est un système de mise en cache d'objets distribués et utilise la key-value
pour stocker de petites données. Avant de commencer à appeler le code Memcache
en PHP, vous devez vous assurer qu'il est installé. Cela peut être fait en utilisant la méthode class_exists
en php. Une fois que le module est validé, vous commencez par vous connecter à l'instance du serveur memcache.
if (class_exists('Memcache')) {
$cache = new Memcache();
$cache->connect('localhost',11211);
}else {
print "Not connected to cache server";
}
Cela permettra de vérifier que les pilotes php de Memcache sont installés et de se connecter à l'instance du serveur memcache qui s'exécute sur localhost.
Memcache s'exécute en tant que démon et s'appelle memcached
Dans l'exemple ci-dessus, nous ne sommes connectés qu'à une seule instance, mais vous pouvez également vous connecter à plusieurs serveurs en utilisant
if (class_exists('Memcache')) {
$cache = new Memcache();
$cache->addServer('192.168.0.100',11211);
$cache->addServer('192.168.0.101',11211);
}
Notez que dans ce cas, contrairement à connect, il n'y aura pas de connexion active avant d'essayer de stocker ou de récupérer une valeur.
Dans la mise en cache, trois opérations importantes doivent être implémentées
- Stocker des données: Ajouter de nouvelles données au serveur memcached
- Obtenir des données: extraire des données du serveur memcached
- Supprimer des données: Supprimer des données déjà existantes du serveur memcached
Stocker des données
$cache
objet de classe $cache
ou memcached a une méthode set
qui prend une clé, une valeur et une heure pour enregistrer la valeur de (ttl).
$cache->set($key, $value, 0, $ttl);
Ici, $ ttl ou time to live est le temps en secondes que vous voulez que memcache stocke la paire sur le serveur.
Obtenir des données
$cache
objet de la classe $cache
ou memcached a une méthode get
qui prend une clé et renvoie la valeur correspondante.
$value = $cache->get($key);
S'il n'y a pas de valeur définie pour la clé, elle retournera null
Suprimmer les données
Parfois, vous pourriez avoir besoin de supprimer une valeur de cache. $cache
ou memcache instance a une méthode de delete
qui peut être utilisée pour le même.
$cache->delete($key);
Petit scénario pour la mise en cache
Supposons un simple blog. Il y aura plusieurs publications sur la page de destination qui seront extraites de la base de données avec chaque chargement de page. Afin de réduire les requêtes SQL, nous pouvons utiliser memcached pour mettre en cache les publications. Voici une toute petite implémentation
if (class_exists('Memcache')) {
$cache = new Memcache();
$cache->connect('localhost',11211);
if(($data = $cache->get('posts')) != null) {
// Cache hit
// Render from cache
} else {
// Cache miss
// Query database and save results to database
// Assuming $posts is array of posts retrieved from database
$cache->set('posts', $posts,0,$ttl);
}
}else {
die("Error while connecting to cache server");
}
Cache à l'aide du cache APC
Alternative PHP Cache (APC) est un cache d'opcode gratuit et ouvert pour PHP. Son objectif est de fournir un framework gratuit, ouvert et robuste pour la mise en cache et l'optimisation du code intermédiaire PHP.
sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart
Ajouter un cache:
apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;
Supprimer le cache:
apc_delete($key);
Exemple de cache:
if (apc_exists($key)) {
echo "Key exists: ";
echo apc_fetch($key);
} else {
echo "Key does not exist";
apc_add ($key, $value , $ttl);
}
APC est près de 5 fois plus rapide que Memcached.