ホームページ >バックエンド開発 >PHPチュートリアル >PHP データ キャッシュ テクノロジ_PHP チュートリアル
データ キャッシュは、Web 開発で一般的に使用されるパフォーマンス最適化方法です。現在、ファイル キャッシュとデータベース キャッシュには 2 つの主な形式があります。データベース キャッシュは不可能ではなく、確かに非常に優れており重要です。従来のデータベースは主にビジネス層やモジュール設計などから検討されているのに対し、キャッシュデータベースは主によく使われる複数テーブルのクエリをキャッシュするために実装層から設計されていると思います。ここで重要なのは、ファイルのキャッシュです。インターネット上には多くの情報があります。ここでは、いくつかの主要な情報を転載します。
キャッシュは、「時間のためのスペース」戦略の典型的なアプリケーション モードであり、システム パフォーマンスを向上させる重要な方法です。キャッシュを使用すると、アクセス量が多い場合にデータベース操作の数が大幅に削減され、システムの負荷が大幅に軽減され、システムのパフォーマンスが向上します。ページ キャッシュと比較して、結果セットはフォーマット情報を含まない一種の「生データ」であり、データ量が比較的少なく、再フォーマットできるため、非常に柔軟です。 PHP は「コンパイルと実行を同時に行う」スクリプト言語であるため、結果セットのキャッシュをある程度まで使用するための非常に便利な方法も提供します。つまり、対応するデータ定義コード セグメントを動的に含めることによってキャッシュを使用します。 「RamDisk」上にキャッシュを構築すればさらに効率が上がるはずです。以下は参考用の小さなサンプルコードです。
<span style="COLOR: #000000"><br><span style="COLOR: #0000bb"><? <BR></SPAN><SPAN style="COLOR: #ff8000">// キャッシュを使用してデータをロードする <br><br></SPAN><SPAN style="COLOR: #007700">function </SPAN><SPAN style="COLOR: #0000bb">load_data</SPAN><SPAN style="COLOR: #007700">(</SPAN><SPAN style="COLOR: #0000bb">$id</SPAN><SPAN style="COLOR: #007700">,</SPAN><SPAN style="COLOR: #0000bb">$cache_lifetime</SPAN><SPAN style="COLOR: #007700">) { <br><br></SPAN> <SPAN style="COLOR: #ff8000">// 戻りデータ <br><br></SPAN><SPAN style="COLOR: #0000bb">$data </SPAN><SPAN style="COLOR: #007700">= 配列(); <br><br></SPAN><SPAN style="COLOR: #ff8000">// make cache filename <br><br></SPAN><SPAN style="COLOR: #0000bb">$cache_filename </SPAN><SPAN style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">‘cache_‘</SPAN><SPAN style="COLOR: #007700">.</SPAN><SPAN style="COLOR: #0000bb">$id</SPAN><SPAN style="COLOR: #007700">.</SPAN><SPAN style="COLOR: #0000bb">‘</SPAN><SPAN style="COLOR: #007700">. </SPAN><SPAN style="COLOR: #0000bb">php‘</SPAN><SPAN style="COLOR: #007700">; <br><br></SPAN><SPAN style="COLOR: #ff8000">// キャッシュファイルの最終変更時刻を確認する <br><br></SPAN><SPAN style="COLOR: #0000bb">$cache_filetime </SPAN><SPAN style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">filemtime</SPAN><SPAN style="COLOR: #007700">(</SPAN><SPAN style="COLOR: #0000bb">$cache_filename</SPAN><SPAN style="COLOR: #007700">); <br><br>if (</SPAN><SPAN style="COLOR: #0000bb">time</SPAN><SPAN style="COLOR: #007700">() - </SPAN><SPAN style="COLOR: #0000bb">$cache_filetime </SPAN><SPAN style="COLOR: #007700"><= </SPAN><SPAN style="COLOR: #0000bb">$cache_lifetime</SPAN><SPAN style="COLOR: #007700">) { <br><br></SPAN><SPAN style="COLOR: #ff8000">//** キャッシュは期限切れではない<br><br></SPAN><SPAN style="COLOR: #007700">含む(</SPAN><SPAN style="COLOR: #0000bb"> $キャッシュファイル名</SPAN><SPAN style="COLOR: #007700">); <br><br>} else { <br><br></SPAN><SPAN style="COLOR: #ff8000">//** キャッシュの有効期限が切れています <br><br>// データベースからデータをロードします <br><br>// ... <br><br></SPAN><SPAN style="COLOR: #007700">while (</SPAN><SPAN style="COLOR: #0000bb">$dbo</SPAN><SPAN style="COLOR: #007700"> -></SPAN><SPAN style="COLOR: #0000bb">次のレコード</SPAN><SPAN style="COLOR: #007700">()) { <br><br></SPAN><SPAN style="COLOR: #ff8000">// $data[] = ... <br><br></SPAN><SPAN style="COLOR: #007700">} <br><br></SPAN><SPAN style="COLOR: #ff8000">// データを php ファイルとしてフォーマットする <br><br></SPAN><SPAN style="COLOR: #0000bb">$data_cache </SPAN><SPAN style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #dd0000">」 <br><br>while (list($key, $val) = each($data)) { <br><br>$data_cache .= "</SPAN><SPAN style="COLOR: #0000bb">$data</SPAN><SPAN style="COLOR: #007700">[</SPAN><SPAN style="COLOR: #0000bb">'$key'</SPAN><SPAN style="COLOR: #007700">]=array(</SPAN><SPAN style="COLOR: #0000bb">'</SPAN>) <SPAN style="COLOR: #dd0000">"; <br><br>$data_cache .= "</SPAN><SPAN style="COLOR: #0000bb">'NAME'</SPAN><SPAN style="COLOR: #007700">=></span><span style="COLOR: #dd0000">""</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">qoute</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$val</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">'NAME' </span><span style="COLOR: #007700">])。 </span><span style="COLOR: #dd0000">""," <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">.= </span><span style="COLOR: #dd0000">"'VALUE'=>""</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">qoute</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$val</span><span style="COLOR: #007700">[</span> <span style="COLOR: #0000bb">「価値」</span><span style="COLOR: #007700"> ]).</span><span style="COLOR: #dd0000">""" <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">.= </span><span style="COLOR: #dd0000">";);rn"</span><span style="COLOR: #007700">; <br><br>}<br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">= </span><span style="COLOR: #dd0000">"?>rn"</span><span style="COLOR: #007700">; <br><br></span><span style="COLOR: #ff8000">// データをキャッシュファイルに保存します <br><br></span><span style="COLOR: #007700">if (</span><span style="COLOR: #0000bb"> $fd </span><span style="COLOR: #007700"> = </span><span style="COLOR: #0000bb">fopen</span> <span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$cache_filename</span><span style="COLOR: #007700">,</span><span style="COLOR: #0000bb">'w</span><span style="COLOR: #007700">+</span><span style="COLOR: #0000bb">'</span><span style="COLOR: #007700">)) { <br><br></span><span style="COLOR: #0000bb">fputs</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$fd</span><span style="COLOR: #007700">,</span>) <span style="COLOR: #0000bb">$data_cache</span><span style="COLOR: #007700">); <br>fclose<br></span>(<span style="COLOR: #0000bb"></span>$fd<span style="COLOR: #007700"></span>) <span style="COLOR: #0000bb"></span>} <span style="COLOR: #007700"><br>return <br><br>$data<br><br>} <br></span><span style="COLOR: #0000bb"></span>?&g t; <span style="COLOR: #007700"> <br><br><br><br></span><span style="COLOR: #0000bb">該当する状況: </span> 1. データは比較的安定しており、主に読み取り操作が行われます。 <br>2. ファイル操作はデータベース操作よりも高速です。 <br>3. 複雑なデータアクセス、大量のデータアクセス、集中的なデータアクセス、システムデータベースの負荷が非常に高くなります。 </span>4.Web/DB分離構造またはマルチWeb単一DB構造。