最新のキャッシュ機能をWindowsでテストしよう
ローカル環境でテストする必要があり、XAMPPにAPCとmemcachedを導入しました。
サクッと導入できるかと思いきや、解説されているリンクが切れていたりと、なかなか苦労しました。
XAMPPにAPCを導入する
今回APCを導入するバージョンは、XAMPP 1.8.2、PHP 5.4.31です。
APCのダウンロード
APCは「APC – Win Web Dev」でダウンロードできます。
いくつか種類があるのですが、表記にtsとあるのはthread safe、ntsとあるのはnon thread safeという意味。ということでApacheはtsバージョン、IISはntsバージョンを使います。
ということで、今回XAMPPにインストールするのはAPC 3.1.14 beta for PHP 5.4 (Win7/2008)です。win7とありますが他のWindowsでも問題なく動きます。
解凍すると「php_apc_3114_beta_php54.dll」があるので、名前を「php_apc.dll」に変更します。
そのファイルを「C:\xampp\php\ext」に保存します。
PHPの設定を変更
「C:\xampp\php\php.ini」を開いてファイルの最後に以下の設定を追加。
extension=php_apc.dll [APC] apc.enabled = 1 apc.shm_size = 32M apc.ttl = 0 apc.user_ttl = 0 apc.gc_ttl = 3600 apc.stat = 1
設定が完了したらApacheを再起動します。
動作を確認するために「http://localhost/xampp/」のphpinfo()でapcを検索する。
念の為にPHPでも確認してみます。
<?php if ( function_exists( 'apc_store' ) ) { var_dump("apc 有効だよ"); } else { var_dump("apc 有効じゃないよ"); } ?>
XAMPPにmemcachedを導入する
今回導入するバージョンはPHP 5.4.31、dllはv1.4.24です。
PHPのdllをダウンロード
「こちらのリポジトリ」でファイルをダウンロードします。
今回もApache用なのでtsバージョンをダウンロードします。
今回32bit環境でダウンロードしたものは「http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/php_memcache-3.0.8-5.4-ts-vc9-x86.zip」です。
解凍して「php_memcache.dll」を「C:\xampp\php\ext」に保存。
どうせインストールするなら最新のものということで3.0.8-5.6をインストールしてみたところ以下のエラーで動作しませんでした。 php startup: memcache: unable to initialize module Module compiled with module API=20131226 PHP compiled with module API=20100525 These options need to match どうやらPHPのバージョンに合わせてコンパイルしているため依存関係が厳密なようです。
PHPの設定を変更
「C:\xampp\php\php.ini」を編集。
extension=php_memcache.dll [Memcache] memcache.allow_failover = 1 memcache.max_failover_attempts=20 memcache.chunk_size =8192 memcache.default_port = 11211
このオプションに関する設定は「PHP: 実行時設定 – Manual」を参考にしてください。
XAMPPの再起動してphpinfoを確認。
memcachedサーバをダウンロード
今回は32bit環境だったので、windowsの32bit OS用のmemcachedをダウンロードします。
検索したところ公式ページはわからりませんでしたが、「こちらのリポジトリ」で配布されているようです。
ズラーっと沢山表示されるので「memcached」で検索してみてください。
今回は「http://s3.amazonaws.com/downloads.northscale.com/memcached-win32-1.4.4-14.zip」をインストールしました。
memcachedサーバをインストールする
ダウンロードしたファイルを解凍して「memcached-win32-1.4.4-14」を「memcached」に変更してCドライブ直下に保存。
プログラム名を指定して実行で「cmd」と打ってコマンドプロンプトを起動して以下のコマンドを実行。
c:\memcached\memcached.exe -d install
初回起動時は以下のコマンドで起動します。(Windowsを再起動すれば自動で起動します)
c:\memcached\memcached.exe -d start
また初回起動時は「Windows セキュリティの重要な警告」ウィンドウが出ますが「ブロックを解除する」ボタンをクリックします。
他にも以下のコマンドを使えます。
c:\memcached\memcached.exe -d stop ← ストップ c:\memcached\memcached.exe -m 512 ← メモリサイズの指定(これで512MB) c:\memcached\memcached.exe stats ← memcashedのステータス表示
ネット上に転がってるmemcacheのテスト用のコードを実行。
<?php $memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br/>\n"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 10 seconds) <br/>\n"; $get_result = $memcache->get('key'); echo "Data from the cache:<br/>\n"; var_dump($get_result); ?>
以下のように出力されれば正しく設定されています。
Server's version: 1.4.4-14-g9c660c0 Store data in the cache (data will expire in 10 seconds) Data from the cache: object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }
おかしいとCould not connectと表示されます。
memcasheの設定を確認
コマンドプロンプトで以下のコマンドを打って確認します。
telnet localhost 11211 > stats STAT pid 5100 STAT uptime 496 STAT time 1439715574 STAT version 1.4.4-14-g9c660c0 STAT pointer_size 32 STAT curr_connections 10 STAT total_connections 12 STAT connection_structures 11 STAT cmd_get 1 STAT cmd_set 1 STAT cmd_flush 0 STAT get_hits 1 STAT get_misses 0 STAT delete_misses 0 STAT delete_hits 0 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 110 STAT bytes_written 124 STAT limit_maxbytes 67108864 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT bytes 119 STAT curr_items 1 STAT total_items 1 STAT evictions 0 END > quit
メモリサイズはデフォルトで64MBみたいですね。
ステータスの見方は「Memcacheのstatsコマンド – tetsuyai’s blog」で紹介されています。
以上でXAMPPにAPCとmemcacheを導入できました。
サーバ構築の際、参考になりました。
さて、記事中ほどの”memcachedサーバをインストールする”のイメージ
“apc-memcached04″にて赤枠の位置が間違っています。
よろしければ修正願います。
ご指摘ありがとうございます。
画像修正しました。
真逆の意味になっていましたね。失礼しました。