タグ別アーカイブ: php

MemcachedのインストールとPHPからのアクセス

負荷分散システムでのデータキャッシュ化のため、memcachedを導入しました。

TCP/IP通信でリモートサーバのメモリにデータを保存することが出来ます。

技術的なことは他のサイトに譲るとして、導入方法です。

memcachedは元々DBのクエリキャッシュのために作られたようですが、

大抵のデータは格納できます。

Ubuntuからのインストールは非常に簡単で、synapticでmemcachedをインストールするだけです。

起動コマンドも簡単です。

memcached -p ポート番号 -m 最大メモリ -d

最大メモリが64MBであるなら、パラメータには64mと指定します。

これだけで、メモリキャッシュサーバの導入は終わり。

フロントエンドの例として、PHPで使用してみます。

PECLライブラリのインストールが必要ですが、これもsynapticからphp5-memcacheをインストールするだけです。

と思ったのですが、memcacheライブラリがロードされない・・・

/etc/php5/cli/conf.d/memcache.iniファイルの2行目で、memcache.soのロードがコメントアウトされていました。

viなどで、コメントアウトを取れば完成です。

簡単な動作例

[sourcecode language=”php”]
$key = "test";
$m = new Memcache();
$m->connect("localhost", 10000); // localhostの10000番でmemcachedを起動したと仮定
$v = $m->get($key);
if($v === false) {
$v = "memcached at ".date(‘Y/m/d H:i:s’);
$m->set($key, $v, 0, 30); // 30秒間キャッシュ
}
echo $v, "\n";
[/sourcecode]

キャッシュの有効期限をなくすには、setメソッドの第4引数を0にします。

memcacheはセッションハンドラにも使えるので、便利です。

Smarty vs phtml

内モンゴル事務所にて、MVCの効果的な分離方法を検討しています。

今までは、Zend_Viewを継承したViewにSmartyを連携させる形で実装を行っていました。

しかし、Zendが提供するView関連のライブラリは、基本的にphtmlによる実装となっています。

Zendとしては、phtmlを中心としていきたいのでしょう。

ただ、コードとビューの分離を考えると、phtmlよりはSmartyコードの方が適していると思われます。

Zend_LayoutにSmartyを連携させるか、phtmlとしてZend_Dojoも使えるようにするか

検討が続きます・・・