ログ日記

作業ログと日記とメモ

xcacheを入れてみる

キャッシュ機構が欲しいけれどmemcachedまでは要らないかな、と思ってaptitude searchを眺めているとxcacheというのがあることに気付いた。

aptitude install php5-xcache

使い方は検索しても全然出てこない。どこもインストールと速度調査の記事ばかり。
aptで入れるからインストールは一瞬。その代わり.soファイルとそれを読み込むiniファイルしかない。READMEもサンプル設定ファイルもない。
仕方がないので本家を見る。
http://xcache.lighttpd.net/


パッケージのxcacheはバージョン1.3で、PHP5.3に対応したバージョンらしい。
管理用のファイルがないので取ってきて適当な場所に置く。

wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz
mv xcache-1.3.0/admin ~/public_html/xcacheadmin
cd ~/public_html/xcacheadmin/        

http://localhost/xcacheadmin/mkpassword.php にアクセスしてmd5形式のパスワードを生成する。
そして/etc/php5/conf.d/xcache.ini を編集する。

; configuration for php xcache module
extension=xcache.so

xcache.admin.user = "admin"
xcache.admin.pass = "md5 password"

これでWeb管理画面が使える。


iniファイルの説明はここ。
http://xcache.lighttpd.net/wiki/XcacheIni


取り敢えずキャッシュをオンにしてみる。

xcache.size = 100M
xcache.var_size = 50M


キャッシュのサンプルコードはここ。
http://xcache.lighttpd.net/wiki/XcacheApi


試しに使ってみる。

<?php

$d = new DateTime();
xcache_set('date', $d);
var_dump(xcache_get('date'));

同じセッションだとオブジェクトそのままでも使えるが、別のセッションでxcache_getだけ使ってオブジェクトを取得しようとするとSegmentation fault (11)で落ちる。そりゃそうか…。

<?php

$d = new DateTime();
xcache_set('date', serialize($d));
var_dump(unserialize(xcache_get('date')));

これならいけそう。




ここまでやってから他の方法を探してみた。サーバ一台なら通常ファイルが一番いい気がしてきた。

うーむ。
素直にPythonとかRubyとかを使うべきなのかなぁ。
PHPでマゾいことをやるか…。



検索してたらEthnaソースコードがあった。
http://svn.sourceforge.jp/svnroot/ethna/ethna/branches/ETHNA_UTF8_BRANCH/class/Ethna_ClassFactory.php
コメントが読みやすいね。