• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

PRADO キャッシュ

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

PRADO キャッシュ 概要

速度向上、負荷軽減などアプリケーションにはキャッシュ機構は必須と言える。
各フレームワークにはそれぞれにキャッシュ機構が搭載されていることが多い。
PRADOにもキャッシュ機構が実装されている。
種類は結構豊富。

  • file
  • db
  • sqlite
  • memcached
  • APC

使い方はどれも同じである。
今回は一番お手軽なsqliteを利用する。

PRADO キャッシュ 詳細

お忘れかもしれないが、
PHP5にはsqliteモジュールは標準搭載されている。
SQLiteはファイルベースのデータベースで、
持ち運びも出来るメリットがある。
また、手軽に利用できるため、
キャッシュ利用としては最適と言える。

application.xmlのmodulesに以下の内容を追加。
applicaiton.xml

<module id="cache" class="System.Caching.TSqliteCache"
  DbFile="Application.Data.site" />
$keyName = "Home";
$cacheObj = $this->Application->Modules["cache"];
// retrieves data item from cache
if( !$dataItem = $cacheObj->get($keyName) ){
  $dataItem = "Cached data: ". date("Y-m-d H:i:s");
  // saves data item in cache
  $cacheObj->set($keyName,$dataItem, strtotime(" 3 minutes ") );
}
 
echo $dataItem;
//$cacheObj->flush();  // delete all

PRADO キャッシュ 補足

アクセラレーション目的のキャッシュでもない限り、
すべてのページでキャッシュを使うことは少ないと思う。
application.xmlにモジュール登録を行うと、
手軽に利用できる反面、キャッシュ機構の初期化が全ページで行われる。
データベーステーブルの状態チェックのオーバーヘッドはバカには出来ないので、
モジュール登録ではなくプログラム上でインスタンスを生成することを強くオススメしておく。
initを別途走らせるだけなのでそれほど手間では無いはず。

$keyName = "Home";
Prado::using('System.Caching.TSqliteCache');
$cacheObj = new TSqliteCache;
$cacheObj->init( null );
// retrieves data item from cache
if( !$dataItem = $cacheObj->get($keyName) ){
  $dataItem = "Cached data: ". date("Y-m-d H:i:s");
  // saves data item in cache
  $cacheObj->set($keyName,$dataItem, strtotime(" 3 minutes ") );
}
 
echo $dataItem;
//$cacheObj->flush();

framework/prado/caching.txt · 最終更新: 2007/08/25 14:01 by dozo