ホームページ > バックエンド開発 > PHPの問題 > 一般的な PHP キャッシュ書き込み方法について話しましょう

一般的な PHP キャッシュ書き込み方法について話しましょう

PHPz
リリース: 2023-04-25 17:54:16
オリジナル
713 人が閲覧しました

Web サイト開発において、キャッシュは Web サイトのパフォーマンスを向上させる効果的な手段です。広く使用されているプログラミング言語の 1 つである PHP は、さまざまなキャッシュ実装方法も提供します。この記事では、開発者が Web サイトのパフォーマンスを最適化するのに役立つ、一般的な PHP キャッシュの書き込み方法をいくつか紹介します。

1. ファイル キャッシュ

ファイル キャッシュは、データをシリアル化してファイルに書き込むことでデータ キャッシュを実装する単純なキャッシュ方法です。コードは次のように実装されます。

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;
    }
}
ログイン後にコピー

上記のコードでは、ファイル名生成ルールを使用してキャッシュ ファイル名の競合を回避し、同時にキャッシュ データが取得されるたびにキャッシュの有効期限が切れているかどうかを判断します。 、これによりキャッシュ データの有効性が保証されます。ただし、この方法には、ファイル システム IO 操作のコストが高くつくなど、サーバーのパフォーマンスに一定の影響を与えるなど、いくつかの欠点もあります。

2. メモリ キャッシュ

メモリ キャッシュはファイル キャッシュよりも効率的で、キャッシュされたデータをメモリに保存し、ファイル システムの IO 操作を必要としないため、データの取得速度が向上します。一般的なメモリ キャッシュ ソリューションは 2 つあります。

  1. Memcache

Memcache は、複数のサーバーで使用できるメモリベースの分散キャッシュ ソリューションです。 キャッシュされたキャッシュの読み取りおよび書き込み操作を実行します。データ。 Memcache の PHP 拡張機能は、シンプルで使いやすいインターフェイスを提供し、開発者がデータのキャッシュ読み取りおよび書き込み操作を簡単に実装できるようにします。コードは次のように実装されます。

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

上記のコードでは、Memcache オブジェクトをインスタンス化し、ポート 11211 を使用してローカル マシンの Memcache サービスとの接続を確立します。キャッシュ操作を実行するときは、get メソッドと set メソッドを使用してキャッシュの読み取りと書き込みを行うだけで済みます。

  1. Redis

Redis は、メモリベースの高性能非リレーショナル データベースであり、さまざまなデータ構造と高度なキャッシュ戦略をサポートし、高い同時実行性をサポートできます。高速かつ応答性の高いネットワーク サービス。 Redis の PHP 拡張機能は API サポートを提供し、開発者が Redis をキャッシュ ソリューションとして簡単に使用できるようにします。

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

上記のコードでは、最初に Redis サーバーに接続し、次に get メソッドと set メソッドを通じてキャッシュの読み取りおよび書き込み操作を実行します。

3. OPcache

OPcache は、PHP バージョン 5.5.0 に付属するバイトコード キャッシュ拡張機能で、PHP ファイル内のコードをメモリにキャッシュし、インタープリタの実行速度を向上させることができます。キャッシュはバイトコードであるため、インタプリタが PHP スクリプトを解釈するのにかかる時間を大幅に短縮できます。 OPcache を開く方法は非常に簡単です:

  1. php.ini ファイルを変更します

php.ini ファイルで [OPcache] を見つけて、この拡張機能を有効にします:

; 打开OPcache扩展
zend_extension=opcache.so
[opcache]
; 缓存内存大小
opcache.memory_consumption=128
; 缓存路径
opcache.file_cache=/tmp
; 开启缓存
opcache.enable=1
ログイン後にコピー
  1. コードでの OPcache の使用
$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;
}
ログイン後にコピー

上記のコードでは、まず OPcache がオンになっているかどうかを判断し、次に、キャッシュ ファイルが存在するか、キャッシュ時間が経過したかどうか。データをフェッチするか、データを再フェッチします。キャッシュが存在しないか期限切れの場合は、取得したデータをシリアル化してキャッシュ ファイルに書き込み、インクルードによってキャッシュ ファイル内のデータを読み取ります。

4. 概要

上記は、いくつかの一般的な PHP キャッシュ書き込み方法です。各方法には、独自の長所と短所があります。開発者は、特定のプロジェクトの条件に基づいて、適切なキャッシュ ソリューションを選択する必要があります。ファイル キャッシュは実装が簡単ですが非効率的で、メモリ キャッシュは効率的ですが、操作が比較的複雑です。 OPcache は PHP 独自のバイトコード キャッシュ拡張機能です。手動で有効にする必要はありません。コード内で特定の関数を使用するだけで済みます。

以上が一般的な PHP キャッシュ書き込み方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート