ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用してデータベース クエリ結果のキャッシュを実装する_PHP チュートリアル
これらのデータは頻繁には変更されませんが、長期間変更されないため、プログラムのパフォーマンスを向上させるためにデータベースのクエリを削減したい場合があります。そのため、データベースに接続するたびに、対応する結果が保存されます。ファイルの形式。たとえば、モールの場合、商品の数は頻繁に変更される可能性がありますが、商品の種類と商品価格は長期間変更されないため、頻繁にクエリを実行する必要がある場合は、データベース キャッシュ テクノロジーを使用できます。
キャッシュの理由
最初のポイントは、まず通常の状況で SQL クエリを実行するオーバーヘッドを確認することです。まずデータベースに接続し、次に SQL クエリを準備し、次にクエリ情報を送信し、返された結果を取得して、最後にデータベースを閉じます。これにはリソースがさらに必要になり、PHP プログラムはデータベースからのクエリを待機する必要があるため、応答も遅くなります。
2 番目のポイントは、ピーク時間などデータベースの負荷が高い場合、一部のデータをハードディスクに保存し、ファイルの形式で読み取る必要があるということです。この方法では、ハードディスクを使用します。スペース データベースへの負荷と引き換えに、これはマシンのパフォーマンスにも依存します。
3 番目のポイントは、一部のデータの更新を急ぐ必要がないことです。たとえば、上記の製品タイプのテーブルなど、ユーザーの主要な情報は通常、パスワードを簡単に変更しません。ファイルの形式でキャッシュすることを選択できます。
キャッシングの実装原理
最初のポイントは、コンテンツを強制的に更新するタイミングを決定する必要があるということです。最も一般的な 3 つの方法は、通常、タイムスタンプを使用することです。2 番目のポイントは、データベース データが更新されている場合にキャッシュを自動的に更新することです。 3 つ目は手動によるトリガーで、キャッシュされたコンテンツを強制的に更新するように情報システムに指示します。
2 番目のポイントは、serialize() 関数を使用してデータベースから取得したデータをシリアル化してローカル ファイルとして保存し、その後 unserialize を使用してローカル ファイルから情報を読み取ることです。 PHP 値を保存するための特定の方法。これにより、これらの値の型と構造が失われないことが保証されます。
実践的なデモンストレーション
まず、データベースから読み取ったデータをローカル ファイルに保存します。コードは次のとおりです。
りー
次に、この sqlcache.txt ファイルを開くことができます。その内容は次のとおりです:
<?php //第一步连接数据库 $conn = mysqli_connect("localhost","root","","bbs"); //第二步设置相应的字符编码 $setting = 'set names utf8'; mysqli_query($conn,$setting); //第三步进行查询 $sql = 'SELECT * FROM user'; $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. リンク解除を使用してファイルを強制的に削除し、データキャッシュをクリアできます