Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns über einige gängige PHP-Cache-Schreibmethoden sprechen

Lassen Sie uns über einige gängige PHP-Cache-Schreibmethoden sprechen

PHPz
PHPzOriginal
2023-04-25 17:36:15684Durchsuche

Bei der Website-Entwicklung ist Caching ein wirksames Mittel zur Verbesserung der Website-Leistung. Als eine der am weitesten verbreiteten Programmiersprachen bietet PHP auch eine Vielzahl von Caching-Implementierungsmethoden. In diesem Artikel werden einige gängige PHP-Cache-Schreibmethoden vorgestellt, um Entwicklern bei der Optimierung der Website-Leistung zu helfen.

1. Datei-Caching

Datei-Caching ist eine einfache Caching-Methode, die das Daten-Caching implementiert, indem Daten serialisiert und in eine Datei geschrieben werden. Der Code wird wie folgt implementiert:

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;
    }
}

Im obigen Code verwenden wir Regeln zur Generierung von Dateinamen, um Konflikte mit Cache-Dateinamen zu vermeiden, und stellen gleichzeitig jedes Mal fest, ob der Cache abgelaufen ist, wenn wir zwischengespeicherte Daten abrufen, um so die Gültigkeit sicherzustellen der zwischengespeicherten Daten. Diese Methode weist jedoch auch einige Mängel auf, z. B. die hohen Kosten für Dateisystem-E/A-Vorgänge, die einen gewissen Einfluss auf die Serverleistung haben.

2. Speichercache

Der Speichercache ist effizienter als der Dateicache. Er speichert zwischengespeicherte Daten im Speicher und erfordert keine E/A-Vorgänge im Dateisystem, wodurch die Geschwindigkeit der Datenerfassung erhöht wird. Es gibt zwei gängige Speicher-Caching-Lösungen:

  1. Memcache

Memcache ist eine speicherbasierte verteilte Caching-Lösung, die zwischengespeicherte Daten auf mehreren Servern lesen und schreiben kann. Die PHP-Erweiterung von Memcache bietet eine einfache und benutzerfreundliche Schnittstelle, die es Entwicklern ermöglicht, Cache-Lese- und Schreibvorgänge für Daten problemlos zu implementieren. Der Code wird wie folgt implementiert:

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

Im obigen Code instanziieren wir ein Memcache-Objekt und stellen dann eine Verbindung mit dem lokalen Memcache-Dienst mit Port 11211 her. Beim Durchführen von Cache-Vorgängen müssen Sie nur über die Get- und Set-Methoden lesen und in den Cache schreiben.

  1. Redis

Redis ist eine speicherbasierte, nicht relationale Hochleistungsdatenbank, die mehrere Datenstrukturen und erweiterte Caching-Strategien unterstützt und Netzwerkdienste mit hoher Parallelität und schneller Reaktion unterstützen kann. Die PHP-Erweiterung für Redis bietet API-Unterstützung, sodass Entwickler Redis problemlos als Caching-Lösung verwenden können.

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

Im obigen Code stellen wir zunächst eine Verbindung zum Redis-Server her und führen dann Cache-Lese- und Schreibvorgänge über die Methoden get und set durch.

3. OPcache

OPcache ist eine Bytecode-Cache-Erweiterung, die mit PHP Version 5.5.0 geliefert wird. Sie kann den Code in der PHP-Datei im Speicher zwischenspeichern und so die Ausführungsgeschwindigkeit des Interpreters verbessern. Da der Bytecode zwischengespeichert wird, kann die Zeit, die der Interpreter zum Interpretieren von PHP-Skripten benötigt, erheblich verkürzt werden. Die Methode zum Aktivieren von OPcache ist sehr einfach:

  1. Ändern Sie die php.ini-Datei

Suchen Sie [OPcache] in der php.ini-Datei und aktivieren Sie diese Erweiterung:

; 打开OPcache扩展
zend_extension=opcache.so
[opcache]
; 缓存内存大小
opcache.memory_consumption=128
; 缓存路径
opcache.file_cache=/tmp
; 开启缓存
opcache.enable=1
  1. Verwenden Sie OPcache im 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;
}

Im obigen Code bestimmen wir zunächst, ob OPcache aktiviert ist, und entscheiden dann, ob Daten aus dem Cache gelesen oder die Daten erneut abgerufen werden sollen, basierend darauf, ob die Cache-Datei vorhanden ist und ob die Cache-Zeit abgelaufen ist. Wenn der Cache nicht existiert oder abgelaufen ist, serialisieren wir die erhaltenen Daten, schreiben sie in die Cache-Datei und lesen dann die Daten in der Cache-Datei über Include.

4. Zusammenfassung: Die oben genannten Methoden haben ihre eigenen Vor- und Nachteile. Entwickler müssen eine geeignete Caching-Lösung basierend auf den spezifischen Projektbedingungen auswählen. Obwohl das Zwischenspeichern von Dateien einfach zu implementieren ist, ist es ineffizient. Obwohl das Zwischenspeichern von Speicher effizient ist, ist der Vorgang relativ komplex. OPcache ist PHPs eigene Bytecode-Caching-Erweiterung. Sie muss nicht manuell aktiviert werden. Sie müssen nur bestimmte Funktionen im Code verwenden.

Das obige ist der detaillierte Inhalt vonLassen Sie uns über einige gängige PHP-Cache-Schreibmethoden sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn