PHP は一般的なサーバーサイド プログラミング言語として、多くの場合大量のデータとリクエストを処理する必要があるため、Web サイトのパフォーマンスを向上させるには効率的なキャッシュ管理が重要です。この記事では、キャッシュの基本原理、PHP 独自のキャッシュ方法、その他の一般的なキャッシュ ライブラリなど、PHP でのキャッシュの使用方法を紹介します。
1. キャッシュの基本原則
Web 開発において、キャッシュとは、データベースや他のソースからデータを取得する必要性を減らすために、頻繁に読み取られるデータを高速アクセス メディアに保存することを指します。各リクエスト中のリソースがデータを読み取る時間。キャッシュを使用する場合は、まずデータがキャッシュに存在するかどうかを確認する必要があります。存在する場合は、キャッシュから直接データを読み取ります。そうでない場合は、データベースまたは他のリソースからデータを読み取り、読み取ったデータをキャッシュに追加します。
キャッシュの利点は、システム リソースのコストを大幅に削減し、Web サイトのパフォーマンスと応答速度を向上できることです。ただし、キャッシュにはいくつかの欠点もあります。たとえば、データが動的に変化する場合、キャッシュによってデータが時間内に更新されず、エラーが発生する可能性があります。
2. PHP 独自のキャッシュ メソッド
Php はさまざまなキャッシュ メソッドを提供しており、その中で最も一般的に使用されるのはメモリ キャッシュ (Memory Cache) とファイル キャッシュ (File Cache) です。
1. メモリ キャッシュ
Php は、Memcached、APC、XCache という 3 つのメモリ キャッシュ メソッドを提供します。これらのキャッシュ ライブラリは、大量のデータを処理する場合に非常に効果的であり、PHP プログラムの実行を高速化できます。
(1)Memcached
Memcached は、一般的に使用される分散メモリ オブジェクト キャッシュ システムで、libevent ネットワーク ライブラリに基づいており、複数のサーバー間でデータを共有できます。 Php は、クラス ライブラリ Memcache を拡張することで、簡単に Memcached を呼び出すことができます。
サンプルコード:
$mem = new Memcache; $mem->connect("localhost", 11211); $result = $mem->get("product_123"); if(!$result) { $result = '...'; // 从数据库或其他资源中读取数据 $mem->set("product_123", $result, 3600); } echo $result;
(2) APC
APC は、「代替 PHP キャッシュ」と呼ばれるメモリ オブジェクト キャッシュ システムで、PHP による高速なデータ読み取りと処理の実現に役立ちます。 、サーバーの負荷を軽減します。 Php は、クラス ライブラリ APC を拡張することで、APC を簡単に呼び出すことができます。
サンプルコード:
$value = apc_fetch('variable_key'); if($value === false) { $value = '...'; // 从数据库或其他资源中读取数据 apc_store('variable_key', $value, $ttl); } echo $value;
(3) XCache
XCache は、コンパイルされた PHP スクリプトをキャッシュして、PHP の実行速度を向上させることができる高速メモリ オブジェクト キャッシュ システムです。 Php は、クラス ライブラリ XCache を拡張することで簡単に呼び出すことができます。
サンプルコード:
$value = xcache_get('variable_key'); if(!$value) { $value = '...'; // 从数据库或其他资源中读取数据 xcache_set('variable_key', $value, $ttl); } echo $value;
2. ファイル キャッシュ
メモリ キャッシュに加えて、Php はデータをローカル ハード ディスクに保存できるファイル キャッシュも提供します。ファイル キャッシュの利点は、データを長期間保存でき、サーバーの再起動によってデータが無効にならないことです。ただし、同時実行性が高い条件では、ファイルのキャッシュがボトルネックになる可能性があります。
サンプル コード:
$cache_file = 'cache/product_123.cache'; if(file_exists($cache_file) && (time() - filemtime($cache_file) < 3600)) { $result = file_get_contents($cache_file); } else { $result = '...'; // 从数据库或其他资源中读取数据 file_put_contents($cache_file, $result); } echo $result;
3. その他の一般的なキャッシュ ライブラリ
PHP に付属のキャッシュ メソッドに加えて、サードパーティのキャッシュ ライブラリも多数あります。 Redis、MongoDB、Couchbase などを使用できます。これらのキャッシュ ライブラリは通常、Php と簡単に統合できるクライアント ライブラリを提供します。
1.Redis
Redis は、文字列、リスト、セット、順序付きセットなど、さまざまなデータ構造をサポートする高速ストレージ システムおよび高速キャッシュ システムです。ハッシュなど
サンプル コード:
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $result = $redis->get('product_123'); if(!$result) { $result = '...'; // 从数据库或其他资源中读取数据 $redis->setex('product_123', 3600, $result); } echo $result;
2.MongoDB
MongoDB は、JSON や BSON などの複数の保存形式をサポートするドキュメント データベースです。 Php は、MongoDB の公式拡張クラス ライブラリを通じて MongoDB を簡単に呼び出すことができます。
サンプル コード:
$m = new MongoClient(); $db = $m->test; $collection = $db->products; $result = $collection->findOne(array('id' => '123')); if(!$result) { $result = '...'; // 从数据库或其他资源中读取数据 $collection->insert(array('id' => '123', 'data' => $result)); } else { $result = $result['data']; } echo $result;
3.Couchbase
Couchbase は、自動シャーディングと負荷分散をサポートし、高いパフォーマンスと負荷分散を備えたメモリベースの分散キー/値ストレージ システムです。高可用性。
サンプルコード:
$cluster = new CouchbaseCluster('http://localhost:8091'); $bucket = $cluster->openBucket('default'); $result = $bucket->get('product_123')->value; if(!$result) { $result = '...'; // 从数据库或其他资源中读取数据 $bucket->upsert('product_123', $result); } echo $result;
4. まとめ
キャッシュはパフォーマンス最適化の非常に重要な手段であり、Php ではメモリ キャッシュやファイル キャッシュなど、さまざまなキャッシュ方法が提供されています。 、Redis、MongoDB、Couchbase などのサードパーティのキャッシュ ライブラリを使用することもできます。キャッシュ方式を選択するときは、自社のビジネスニーズとシステムアーキテクチャに基づいて最適なソリューションを選択し、実際の状況に応じてキャッシュ時間、キャッシュサイズ、キャッシュアルゴリズムなどのパラメータを調整して、最高のパフォーマンス最適化効果を達成する必要があります。 。
以上がPHPはキャッシュをどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。