サイトの多言語化に伴いmemcachedを動的に使う

定数を動的に設定することでサイト全体を制御する

多言語化等によりサイトを多チャネル化する際には、システムの様々な部分をフレキシブルにする必要が生じてくる。過去のエントリーでは、

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における定数設定の参考例として、

定数のグローバル設定 cakephp

のエントリーがあるので参考にしてほしい。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

サイトの多言語化に伴いmemcachedを動的に使うの記事にコメントを投稿