ご利用は計画的に!!
(ノ・・)ン。。。。。。(((●コロコロッ
これはいいね。
使いやすい。
っていうかもっと早く使えば良かった。
(T_T)
キャッシュとは取得したデータなどを一時的に近くの場所に保存しておき、
それを再利用することでデータを取りに行く時間を短縮する技術。
これを自前で創るのは結構面倒なことが多いんだけど、
PEAR::Cache_Lite
http://pear.php.net/package/Cache_Lite
を使えばさくっとやってくれる。
使用できるパラメータは
'cacheDir' => '/tmp/', 'caching' => true, 'lifeTime' => 3600, 'fileLocking' => true, 'writeControl' => true, 'readControl' => true, 'readControlType' => 'crc32', // crc32, md5, strlen 'pearErrorMode' => CACHE_LITE_ERROR_RETURN, 'memoryCaching' => false, 'onlyMemoryCaching' => false, 'memoryCachingLimit' => 1000, 'fileNameProtection' => true, 'automaticSerialization' => true, 'automaticCleaningFactor' => 1, 'hashedDirectoryLevel' => 1
な感じ。
バイナリファイルのキャッシング。
キャッシュデータの階層保存。
ガーベージコレクション。
ファイルのロック。
などなどキャッシュ処理を自前で創ったときに頭を抱えたくなる内容が、
パラメータをペチペチいじるだけでOK.
なかには危険なにおいが漂ってくる様なものまである。
長期運用を考えるなら安全確実なものを選ばないと。
ソースコードはこんな感じ
// Include the package require_once('Cache/Lite.php'); // Set a id for this cache $id = '123'; // Set a few options $options = array( 'cacheDir' => '/tmp/', 'caching' => true, ); // Create a Cache_Lite object $Cache_Lite = new Cache_Lite($options); $input_data = "あいうえお"; echo "input data : ".$input_data; // Test if thereis a valide cache for this id if ($data = $Cache_Lite->get($id)) { echo "<br />get is true :".$data; } else { // No valid cache found (you have to make the page) echo "input data : ".$input_data."<br />"; echo "get is false :".$data; $Cache_Lite->save($input_data); }
たったこのぐらいで高度なキャッシュ機能が備わるなら使わない手はない!!
ハマリどころ二つ
・書き込むファイルはバイナリなのだが、どうも日本語を書き込むとデータが抹殺されるっぽい。
テキストで書き込むようにして回避。
・キーワードを文字列にしつつディレクトリ階層を1以上にしていると、
なぜかうまくディレクトリを作成してくれない。
意図的にディレクトリ作成を作成することで回避。
その他情報あったらちょうだい!!