シンプルなデータ キャッシュ テクノロジ
私は最近、プログラムのパフォーマンス最適化の作業を行っていますが、興味深いアイデアがあるので、それを共有したいと思います。
キャッシュは「時間のためのスペース」戦略の典型的な応用モードであり、システムのパフォーマンスを向上させる重要な方法です。キャッシュを使用すると、アクセス量が多い場合にデータベース操作の回数が大幅に削減され、システムの負荷が大幅に軽減され、システムのパフォーマンスが向上します。ページ キャッシュと比較して、結果セットはフォーマット情報を含まない一種の「生データ」であり、データ量が比較的少なく、再フォーマットできるため、非常に柔軟です。 PHP は「コンパイルと実行を同時に行う」スクリプト言語であるため、結果セットのキャッシュをある程度まで使用する非常に便利な方法、つまり、対応するデータ定義コード セグメントを動的に含めることによってキャッシュを使用する方法も提供します。 「RamDisk」上にキャッシュを構築すればさらに効率が上がるはずです。以下は参考用の小さなサンプルコードです。
// キャッシュを使用してデータをロード
functionload_data($id,$cache_lifetime) {
// 戻りデータ
$data = array();
// キャッシュファイル名を作成します
$cache_filename = ' ache_'.$id.'.php';
//キャッシュファイルの最終変更時刻を確認する
$cache_filetime = filemtime($cache_filename);
if (time() - $cache_filetime <= $cache_lifetime) {
/ /** キャッシュは期限切れではありません
include($cache_filename);
} else {
//** キャッシュは期限切れです
// データベースからデータをロードします
// ...
while ($dbo- > nextRecord()) {
// $data[] = ...
}
// データを php ファイルとしてフォーマットします
$data_cache = "while (list($key, $val; ) = each($data)) {
$data_cache .= "$data['$key']=array('";
$data_cache .= "'NAME'=>"".qoute($val [' NAME'])."","
$data_cache .= "'VALUE'=>"".qoute($val['VALUE'])."""
$data_cache .= ");rn" ;
}
$data_cache = "?>rn";
// データをキャッシュ ファイルに保存します
if ($fd = fopen($cache_filename,'w+')) {
fputs($fd,$data_cache );
fclose($fd);
}
}
return $data;
?> 該当する状況:
1. データは比較的安定しています。
2. ファイル操作はデータベース操作よりも高速です。
3. 複雑なデータアクセス、大規模なデータアクセス、集中的なデータアクセス、システムデータベースの負荷が非常に高くなります。
4.Web/DB分離構造またはマルチWeb単一DB構造。
未確認の質問:
1. 同時アクセス中にファイルを読み書きすると、ロックの問題が発生しますか。
2. 関係するデータファイルが多すぎる場合のパフォーマンスはどうですか?
拡張されたアイデア:
1. JavaScript データ定義コードを生成し、クライアントで呼び出します。
2. まだ考えていません...
一緒に話し合えればと思っています。
キャッシュ
巨大な PHP アプリケーションのパフォーマンスを向上させたい場合は、キャッシュを使用することも良い方法です。 Zend Cache、APC、Afterburner Cache など、多くのキャッシュ ソリューションが利用可能です。
これらの製品はすべて「キャッシュモジュール」です。.php ファイルに対するリクエストが最初に発生すると、Web サーバーのメモリに PHP 中間コードが保存され、その後のリクエストには「コンパイルされた」バージョンで応答します。このアプローチでは、ディスク アクセスが最小限に抑えられ (コードが読み取られて解析されている)、コードがメモリ内で直接実行されるため、サーバーのリクエストに対する応答が大幅に速くなり、アプリケーションのパフォーマンスが大幅に向上します。もちろん、キャッシュ モジュールは PHP ソース ファイルの変更も監視し、必要に応じてページを再キャッシュします。これにより、古い PHP コードによって生成されたページをユーザーが受信するのを防ぎます。キャッシュ モジュールはサーバーの負荷を大幅に軽減し、PHP アプリケーションの応答効率を向上させることができるため、負荷の高い Web サイトに非常に適しています。
これらのキャッシュ製品の選び方
Zend Cache は Zend Technologies の商用ソフトウェアであり、Zend Technologies は前述の PHP エンジンと無料の Zend Optimizer を提供する会社です。 Zend Cache は確かに価値があります。大規模な PHP ページの場合、最初の実行後に速度が向上し、サーバーで使用できるリソースが増加するのを感じることができます。残念ながら、この製品は無料ではありませんが、場合によっては、それでも盗品になる可能性があります。
Afterburner Cache は、Bware Technologies の無料のキャッシュ モジュールです。この製品は現在ベータ版です。 Afterburner キャッシュは Zend Cache に似ていますが、(まだ) Zend Cache ほどパフォーマンスは向上せず、Zend Optimizer では動作しません。
APC は Alternative PHP Cache の略称で、Community Connect のもう 1 つの無料のキャッシュ モジュールです。すでに正式に使用できるほど安定した製品となっており、リクエストへの対応速度も大幅に向上するようだ。