Fermer

mars 7, 2023

Comment mettre en cache des données en PHP —

Comment mettre en cache des données en PHP —


Dans cette astuce rapide, nous parlerons de ce qu’est la mise en cache et comment nous pouvons l’utiliser en PHP.

Il est crucial de se concentrer sur performance lors du développement d’applications PHP. Les applications Web peuvent avoir des milliers, voire des millions d’utilisateurs, ce qui peut entraîner des problèmes de performances et de disponibilité. La mise en cache est inestimable à cet égard, car elle peut aider à éviter les problèmes de performances.

Qu’est-ce que la mise en cache ?

Mise en cache est un moyen de stocker les données fréquemment consultées dans un emplacement de stockage temporaire afin de réduire le nombre de fois où les données doivent être récupérées à partir de leur emplacement de stockage d’origine. Cela peut grandement améliorer les performances d’un site Web ou d’une application, car l’accès aux données à partir du cache est généralement beaucoup plus rapide que l’accès à partir de sa source.

PHP propose plusieurs façons d’implémenter la mise en cache. Jetons un coup d’œil à chacun d’eux.

Mise en mémoire tampon de sortie

Mise en mémoire tampon de sortie est une technique en PHP qui nous permet de stocker la sortie d’un script PHP dans un tampon, plutôt que de l’envoyer directement au navigateur. Cela nous permet de modifier la sortie ou d’effectuer d’autres actions dessus avant qu’elle ne soit affichée à l’utilisateur.

Pour démarrer un tampon de sortie, nous pouvons utiliser le ob_start() fonction. Cette fonction activera la mise en mémoire tampon de sortie et commencera à capturer toutes les sorties envoyées par le script. La sortie peut ensuite être stockée dans une variable à l’aide de la ob_get_contents() fonction. Enfin, le tampon de sortie peut être fermé et la sortie peut être envoyée au navigateur à l’aide de la ob_end_flush() fonction, ou il peut être supprimé à l’aide de la ob_end_clean() fonction.

Voici un exemple du fonctionnement de la mise en mémoire tampon de sortie :

<?php
ob_start(); 

echo 'This output will be stored in the buffer';

$output = ob_get_contents(); 
ob_end_clean(); 

echo 'This output will be sent to the browser';

Dans cet exemple particulier, la chaîne 'This output will be sent to the browser' ne sera renvoyé qu’une seule fois, car nous supprimons le contenu du tampon de sortie qui contient la première instruction d’écho.

La mise en mémoire tampon de sortie peut être utilisée comme cache, car elle nous permet de stocker la sortie d’un script PHP en mémoire, plutôt que de la générer à chaque accès au script.

Fonctions de mise en cache

PHP fournit plusieurs fonctions spécifiquement pour la mise en cache des données, y compris apc_store(), memcache_set()et xcache_set(). Ces fonctions peuvent être utilisées pour stocker des données en mémoire, qui sont accessibles beaucoup plus rapidement que les données stockées sur un disque dur.

apc_store()

Le apc_store() La fonction fait partie de l’extension Alternative PHP Cache (APC), qui fournit un cache d’opcode pour PHP. (Le cache Opcode est une technique d’optimisation des performances pour PHP qui met en cache le bytecode compilé des scripts PHP en mémoire, plutôt que de réanalyser et de recompiler le code source à chaque requête.) Il stocke une valeur dans le cache APC avec une clé spécifiée et le délai de péremption.

Voici un exemple d’utilisation du apc_store() fonction pour mettre en cache une valeur en mémoire :

<?php
$value = 'This is the value to cache';


apc_store('cache_key', $value, 3600);

Pour récupérer la valeur mise en cache, nous pouvons utiliser le apc_fetch() fonction:

<?php
$cachedValue = apc_fetch('cache_key');

if ($cachedValue) {
    
    echo $cachedValue;
} else {
    
    $value = 'This is the value to cache';
    apc_store('cache_key', $value, 3600);
    echo $value;
}

Plus d’informations sur apc_store() peut être trouvé ici.

memcache_set()

Le memcache_set() La fonction fait partie de l’extension Memcache, qui vous permet d’utiliser un serveur Memcache comme cache pour PHP. Il stocke une valeur dans le serveur Memcache avec une clé et un délai d’expiration spécifiés.

Plus d’informations sur memcache_set() peut être trouvé ici.

xcache_set()

Le xcache_set() La fonction fait partie de l’extension XCache, qui fournit un cache d’opcode PHP et un cache de données. Il stocke une valeur dans le cache XCache avec une clé et un délai d’expiration spécifiés.

Plus d’informations sur xcache_set() peut être trouvé ici.

Mise en cache avec une base de données

Une autre option pour la mise en cache en PHP est de utiliser une base de données pour stocker les données en cache. Cela peut sembler contre-intuitif, car l’objectif principal de la mise en cache est de réduire le nombre d’accès à la base de données et d’améliorer les performances. Cependant, il existe certains cas où la mise en cache des données dans une base de données peut être utile.

Un tel cas est si vous avez besoin de mettre en cache de grandes quantités de données qui pourraient ne pas tenir dans la mémoire. De plus, la mise en cache des données dans une base de données peut être utile si vous avez besoin d’accéder aux données mises en cache à partir de plusieurs serveurs, car elle permet un partage facile des données mises en cache entre les serveurs.

Pour mettre en cache des données dans une base de données, vous pouvez utiliser une table avec au moins deux colonnes : une pour la clé de cache et une pour les données mises en cache. Vous pouvez alors utiliser un SELECT requête pour vérifier si la clé de cache existe dans la table, et une INSERT ou UPDATE query pour stocker les données dans la table.

Voici un exemple de mise en cache de données dans une base de données MySQL :

<?php
$db = new mysqli('localhost', 'username', 'password', 'database');

$cacheKey = 'cache_key';
$cachedValue = 'This is the value to cache';


$result = $db->query("SELECT * FROM cache WHERE cache_key = '$cacheKey'");
if ($result->num_rows > 0) {
    
    $db->query("UPDATE cache SET value="$cachedValue" WHERE cache_key = '$cacheKey'");
} else {
    
    $db->query("INSERT INTO cache (cache_key, value) VALUES ('$cacheKey', '$cachedValue')");
}


$result = $db->query("SELECT * FROM cache WHERE cache_key = '$cacheKey'");
$row = $result->fetch_assoc();
$cachedValue = $row['value'];

echo $cachedValue;

Cet exemple montre comment vérifier si une clé de cache existe dans la table de cache et, si c’est le cas, comment mettre à jour la valeur mise en cache. Si la clé de cache n’existe pas, une nouvelle ligne est insérée dans la table avec la clé de cache et la valeur. La valeur mise en cache est ensuite extraite de la table et affichée à l’utilisateur.

Conclusion

La mise en cache est une technique très puissante pour améliorer les performances d’un site Web ou d’une application PHP. PHP fournit plusieurs options pour implémenter la mise en cache, y compris la mise en mémoire tampon de sortie, les fonctions de mise en cache et la mise en cache avec une base de données. En stockant les données fréquemment consultées dans un emplacement temporaire, nous pouvons réduire le nombre de fois où les données doivent être extraites de leur source et améliorer la vitesse et les performances globales d’un site.




Source link