ホームページ >バックエンド開発 >PHPチュートリアル >PHPはキャッシュをどのように使用しますか?

PHPはキャッシュをどのように使用しますか?

WBOY
WBOYオリジナル
2023-06-01 14:51:062354ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。