ホームページ  >  記事  >  バックエンド開発  >  PHP を使用してデータベース クエリ結果のキャッシュを実装する_PHP チュートリアル

PHP を使用してデータベース クエリ結果のキャッシュを実装する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:22:28925ブラウズ

PHP を使用してデータベースクエリ結果のキャッシュを実装する

これらのデータは頻繁には変更されませんが、長期間変更されないため、プログラムのパフォーマンスを向上させるためにデータベースのクエリを削減したい場合があります。そのため、データベースに接続するたびに、対応する結果が保存されます。ファイルの形式。たとえば、モールの場合、商品の数は頻繁に変更される可能性がありますが、商品の種類と商品価格は長期間変更されないため、頻繁にクエリを実行する必要がある場合は、データベース キャッシュ テクノロジーを使用できます。

キャッシュの理由

最初のポイントは、まず通常の状況で SQL クエリを実行するオーバーヘッドを確認することです。まずデータベースに接続し、次に SQL クエリを準備し、次にクエリ情報を送信し、返された結果を取得して、最後にデータベースを閉じます。これにはリソースがさらに必要になり、PHP プログラムはデータベースからのクエリを待機する必要があるため、応答も遅くなります。

2 番目のポイントは、ピーク時間などデータベースの負荷が高い場合、一部のデータをハードディスクに保存し、ファイルの形式で読み取る必要があるということです。この方法では、ハードディスクを使用します。スペース データベースへの負荷と引き換えに、これはマシンのパフォーマンスにも依存します。

3 番目のポイントは、一部のデータの更新を急ぐ必要がないことです。たとえば、上記の製品タイプのテーブルなど、ユーザーの主要な情報は通常、パスワードを簡単に変更しません。ファイルの形式でキャッシュすることを選択できます。

キャッシングの実装原理

最初のポイントは、コンテンツを強制的に更新するタイミングを決定する必要があるということです。最も一般的な 3 つの方法は、通常、タイムスタンプを使用することです。2 番目のポイントは、データベース データが更新されている場合にキャッシュを自動的に更新することです。 3 つ目は手動によるトリガーで、キャッシュされたコンテンツを強制的に更新するように情報システムに指示します。

2 番目のポイントは、serialize() 関数を使用してデータベースから取得したデータをシリアル化してローカル ファイルとして保存し、その後 unserialize を使用してローカル ファイルから情報を読み取ることです。 PHP 値を保存するための特定の方法。これにより、これらの値の型と構造が失われないことが保証されます。

実践的なデモンストレーション

まず、データベースから読み取ったデータをローカル ファイルに保存します。コードは次のとおりです。

りー

次に、この sqlcache.txt ファイルを開くことができます。その内容は次のとおりです:

<?php
//第一步连接数据库
$conn = mysqli_connect("localhost","root","","bbs");
//第二步设置相应的字符编码
$setting = &#39;set names utf8&#39;;
mysqli_query($conn,$setting);
//第三步进行查询
$sql = &#39;SELECT * FROM user&#39;;
$result = mysqli_query($conn,$sql);
//第四步把查询结果转化为一个数组
$rows = mysqli_num_rows($result);
$sqldata = array();
for($i = 0;$i <$rows;$i ++){
	$sqldata[] = mysqli_fetch_assoc($result);
}
//第五步把结果写到缓存文件
$file = "sqlcache.txt";
$msg = serialize($sqldata);
$fp = fopen($file,"w");
fputs($fp,$msg);
fclose($fp);
次に、ファイルからデータを読み取るプログラムを作成できます。PHP コードは次のとおりです:

りー

このように、$result はデータベースから読み取られたデータではなく、ローカル txt ファイルから読み取られたデータになります。つまり、キャッシュの使用をシミュレートします。


説明:

1. filemtime を使用してファイルの作成時刻を取得し、その差を比較してキャッシュを更新するかどうかを決定します。

2. リンク解除を使用してファイルを強制的に削除し、データキャッシュをクリアできます





http://www.bkjia.com/PHPjc/847854.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/847854.html技術記事 PHP を使用してデータベース クエリ結果のキャッシュを実装すると、これらのデータは頻繁に変更されるわけではありませんが、長期間にわたって変更されるため、プログラムのパフォーマンスを向上させるためにデータベース クエリを削減したい場合があります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。