codeigniterでmemcachedを使う場合にあらかじめドライバーが用意されています。
説明ページは下記なんですが…説明が少なすぎてわかりづらい!w
http://codeigniter.jp/user_guide_ja/libraries/caching.html
この中に、
『複数の Memcached サーバは、application/config/ ディレクトリに置いた memcached.php 設定ファイルで指定することができます。』
とあるのですが設定ファイルの書式は全く説明されていません。困ったものです。
ひとまず、使えるところまでやったので備忘録として残しておきます。
まずはmemcachedのインストール。php拡張のpeclで提供されているmemcachedも一緒に入れます。
!! ここで注意 !! php-pecl-memcache を入れると動きません!!!
peclにはmemcachとmemcachedという2つの拡張クラスが用意されているのですが、
codeigniterのドライバでサポートされているのは「memcached」の方です。お間違いなく。
# インストール
$ yum install memcached php-pecl-memcached
# memcached起動
$ /etc/init.d/memcached start
# 自動起動設定
$ chkconfig memcached on
# 確認
$ memcached-tool localhost
$ php -i | grep memcached
# apache再起動
# /etc/init.d/httpd restart
※確認用なのでmemcachedをデフォで起動しています。
そして問題の設定ファイル。これはコアソースで書式が確認できます。
設定例は下記です。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['memcached'] = array(
'hostname' => '127.0.0.1',
'port' => 11211,
'weight' => 1
);
#複数のサーバを設定する場合の例
$config['memcached2'] = array(
'hostname' => '127.0.0.2',
'port' => 11211,
'weight' => 1
);
?>
複数のサーバへ接続する場合は配列のキーを変えて複数設定します。
キー名はネームスペースなので任意の命名で大丈夫なようです。
テスト用のコントローラからアクセス。「memcached test」と表示されれば成功です。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class test extends CI_Controller {
public function test()
{
$this->load->driver('cache', array('adapter' => 'memcached'));
$this->cache->save('memcached test', 111, 3600);
var_dump($this->cache->get('memcached test'));exit;
}
}
これでひとまずmemcachedが容易に使えるようになりましたね。
モデルから取得した情報やWebAPIから取得した情報など、色々キャッシュしてみてください。
では、良いCodeigniter & Memcachedライフを。