定数を動的に設定することでサイト全体を制御する
多言語化等によりサイトを多チャネル化する際には、システムの様々な部分をフレキシブルにする必要が生じてくる。過去のエントリーでは、
tmpディレクトリの多チャネル化
webrootの多チャネル化
について書いた。
今回は、memcachedの多チャネル化(多言語化)について考えてみたい。具体的なコードは以下のような感じになる。
if ( !$memcache->get(MEMKEY.$id) ) { $data = $this->Counter->find('all', array( 'conditions'=>array( 'and' => array( 'Product.email' => $email, 'Product.status' => 1, ) ), 'sort'=>'interval_count', 'limit'=>'50', 'order' => 'Counter.interval_count DESC') ); $memcache->set(MEMKEY.$id, $data, 0, 39600); } else { //echo "bb"; $rand_hots = $memcache->get(MEMKEY.$id); //$memcache->delete(MEMKEY.$id); }
ポイントとなる部分は、
MEMKEY
という定数にある。この定数をbootstrap.phpでドメイン名に応じて動的に変化するようにしておけば、memcachedの多チャネル化対応ができる。英語と日本語で多言語化したのであれば、ドメイン名をキーにして個別にキャッシュされるデータが変更され、以後、ドメイン名に応じてsetとgetが繰り返される。
Cakephpにおける定数設定の参考例として、
のエントリーがあるので参考にしてほしい。