Maison  >  Article  >  développement back-end  >  Parlons de quelques méthodes courantes d'écriture de cache PHP

Parlons de quelques méthodes courantes d'écriture de cache PHP

PHPz
PHPzoriginal
2023-04-25 17:36:15692parcourir

Dans le développement de sites Web, la mise en cache est un moyen efficace d'améliorer les performances du site Web. En tant que langage de programmation largement utilisé, PHP propose également diverses méthodes d’implémentation de mise en cache. Cet article présentera quelques méthodes courantes d'écriture de cache PHP pour aider les développeurs à optimiser les performances des sites Web.

1. Mise en cache de fichiers

La mise en cache de fichiers est une méthode de mise en cache simple qui implémente la mise en cache des données en sérialisant les données et en les écrivant dans un fichier. Le code est implémenté comme suit :

function getCache($key, $lifetime) {
    $cacheFileName = md5($key) . '.cache';    // 产生缓存文件名
    if(file_exists($cacheFileName) && (time() - filemtime($cacheFileName)) < $lifetime) {
        // 缓存未过期,直接读取缓存文件
        return unserialize(file_get_contents($cacheFileName));
    } else {
        // 缓存已过期或不存在,重新获取数据并缓存
        $data = getData();
        file_put_contents($cacheFileName, serialize($data));
        return $data;
    }
}

Dans le code ci-dessus, nous utilisons des règles de génération de noms de fichiers pour éviter les conflits de noms de fichiers cache, et en même temps déterminons si le cache a expiré à chaque fois que nous obtenons des données mises en cache, garantissant ainsi la validité des données mises en cache. Cependant, cette méthode présente également certains défauts, tels que le coût élevé des opérations d'E/S du système de fichiers, ce qui a un certain impact sur les performances du serveur.

2. Cache mémoire

Le cache mémoire est plus efficace que le cache de fichiers. Il stocke les données mises en cache en mémoire et ne nécessite pas d'opérations d'E/S du système de fichiers, augmentant ainsi la vitesse d'acquisition des données. Il existe deux solutions de mise en cache mémoire courantes :

  1. Memcache

Memcache est une solution de mise en cache distribuée basée sur la mémoire qui peut lire et écrire des données mises en cache sur plusieurs serveurs. L'extension PHP de Memcache fournit une interface simple et facile à utiliser, permettant aux développeurs d'implémenter facilement des opérations de lecture et d'écriture de données en cache. Le code est implémenté comme suit :

$memcache = new Memcache;
$memcache->connect('localhost', 11211);
// 缓存读取操作
$data = $memcache->get($key);
if($data === false) {
    // 缓存不存在,重新获取数据并缓存
    $data = getData();
    $memcache->set($key, $data);
}

Dans le code ci-dessus, nous instancions un objet Memcache, puis établissons une connexion avec le service Memcache local avec le port 11211. Lors de l'exécution d'opérations de cache, il vous suffit de lire et d'écrire dans le cache via les méthodes get et set.

  1. Redis

Redis est une base de données non relationnelle hautes performances basée sur la mémoire qui prend en charge plusieurs structures de données et des stratégies de mise en cache avancées, et peut prendre en charge des services réseau à haute concurrence et à réponse rapide. L'extension PHP pour Redis fournit une prise en charge API, permettant aux développeurs d'utiliser facilement Redis comme solution de mise en cache.

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 缓存读取操作
$data = $redis->get($key);
if($data === false) {
    // 缓存不存在,重新获取数据并缓存
    $data = getData();
    $redis->set($key, $data);
}

Dans le code ci-dessus, nous nous connectons d'abord au serveur Redis, puis effectuons des opérations de lecture et d'écriture du cache via les méthodes get et set.

3. OPcache

OPcache est une extension de cache de bytecode fournie avec PHP version 5.5.0. Elle peut mettre en cache le code du fichier PHP en mémoire, améliorant ainsi la vitesse d'exécution de l'interpréteur. Étant donné que le bytecode est mis en cache, cela peut réduire considérablement le temps nécessaire à l'interpréteur pour interpréter les scripts PHP. La méthode pour activer OPcache est très simple :

  1. Modifiez le fichier php.ini

Trouvez [OPcache] dans le fichier php.ini et activez cette extension :

; 打开OPcache扩展
zend_extension=opcache.so
[opcache]
; 缓存内存大小
opcache.memory_consumption=128
; 缓存路径
opcache.file_cache=/tmp
; 开启缓存
opcache.enable=1
  1. Utilisez OPcache dans le code
$cacheFilePath = 'cache.txt';
// 判断缓存是否存在且未过期
if(!empty(opcache_get_status()) && @file_exists($cacheFilePath) && (time() - filemtime($cacheFilePath)) < 60) {
  $cache = include $cacheFilePath;
} else {
  // 缓存不存在或已过期,重新获取数据并写入缓存文件
  $data = getData();
  // 将数据进行缓存
  file_put_contents($cacheFilePath, "<?php return " . var_export($data, true) . ';');
  $cache = $data;
}

Dans le code ci-dessus, nous déterminons d'abord si OPcache est activé, puis décidons s'il faut lire les données du cache ou réobtenir les données en fonction de l'existence ou non du fichier cache et de l'expiration du temps de cache. Si le cache n'existe pas ou a expiré, nous sérialisons les données obtenues et les écrivons dans le fichier cache, puis lisons les données dans le fichier cache via l'inclusion.

4. Résumé

Ci-dessus sont plusieurs méthodes courantes d'écriture de cache PHP. Chaque méthode a ses propres avantages et inconvénients. Les développeurs doivent choisir une solution de mise en cache appropriée en fonction des conditions spécifiques du projet. Bien que la mise en cache de fichiers soit facile à mettre en œuvre, elle est inefficace. Bien que la mise en cache mémoire soit efficace, l'opération est relativement complexe. OPcache est la propre extension de mise en cache de bytecode de PHP. Elle n'a pas besoin d'être activée manuellement. Il vous suffit d'utiliser des fonctions spécifiques dans le code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn