WindowsにPHP+Memcached環境を導入する
ブクマ(何)とかを見ると1ヶ月ほど前の話になるのだが、Windows Vista上にPHP+Memcached環境を導入したらしい。
ただ、変なところでひどく苦労したので、導入時点での情報をまとめてみる。
Memcachedの導入
まずはサーバーの導入。
基本的な手順としては、以下のサイトにあるとおり。
しかし、Windows用バイナリのダウンロードサイトであるリンク先がすでに存在しないという‥orz
ここからが長い旅だったのだが、結局、WikipediaのページからのリンクをたどってやっとこさWindows用バイナリにたどり着いたらしい。
まとめると、2011年2月9日現在(たぶん2011年3月5日時点でも)有効な手順は次のとおり。
- 以下のサイトから、"memcached 1.2.4 Win32 Beta Binaries"(memcached-1.2.4-Win32-Preview-20080309_bin.zip)をダウンロード。
- ダウンロードしたファイルを適当なところに解凍
- コマンドプロンプトで以下のコマンドを実行してWindowsサービスのインストールと起動
- Windows Vista他の場合、管理者権限でコマンドプロンプトを起動する必要あり
- 「memcached.exe -h」とたたくと、その他のオプションのヘルプが表示される
CD /D E:\develop\devServer\memcached-1.2.4-Win32-Preview-20080309_bin memcached.exe -d install memcached.exe -d start
PHP拡張モジュールの導入
PHPからMemcachedにアクセスするためには、PHPの拡張モジュールを入れなきゃいけないということで、それの導入。
基本的な手順としては、以下のようになる。
- 拡張モジュールのダウンロード
- php.iniの設定編集
- Webサーバーの再起動
しかし、これがまた長い旅だった。
まず、以下のサイトから、その下のサイトにたどり着いた。
しかし、PHP 5.3用のファイルがないため、次へ。
で、次のサイトにたどり着き、
「そう、これこれ」と思ったら、VC6版はなくなっている‥
結局、以下のサイトにたどり着き、
ページ中ほどのコメント(キーワード"php_memcache-cvs-20090703-5.3-VC6-x86.zip"で探したときの2番目の一致箇所)に書いてあるリンクからダウンロード。
まとめると、2011年2月9日現在(たぶん2011年3月5日時点でも)有効な手順は次のとおり。
動作確認
以下のようなPHPファイルを作成して、動作を確認。
<pre><?php $memcached = new Memcache(); $memcached->connect('localhost', 11211); function test($memcached, $key, $value) { print('================================' . "\n"); $val = $memcached->get($key); var_dump($val); print('--------------------------------' . "\n"); $memcached->set($key, $value, MEMCACHE_COMPRESSED, 30); $val = $memcached->get($key); var_dump($key); print('='); var_dump($val); } test($memcached, 'hogehoge', 'HogeHoge'); test($memcached, 'hogefoo', 'HogeFoo'); test($memcached, 'foohoge', 'FooHoge'); test($memcached, 'foofoo', array('foo1' => 5, 'foo2' => array('bar1' => 'BAR1'))); ?>
出力はこんな感じ。
================================ bool(false) -------------------------------- string(8) "hogehoge" =string(8) "HogeHoge" ================================ bool(false) -------------------------------- string(7) "hogefoo" =string(7) "HogeFoo" ================================ bool(false) -------------------------------- string(7) "foohoge" =string(7) "FooHoge" ================================ bool(false) -------------------------------- string(6) "foofoo" =array(2) { ["foo1"]=> int(5) ["foo2"]=> array(1) { ["bar1"]=> string(4) "BAR1" } }