XAMPP1.8.2にAPCとmemcachedを導入する方法


投稿日:2015年8月20日
  • 2
  • 4



最新のキャッシュ機能をWindowsでテストしよう

apc-memcached

ローカル環境でテストする必要があり、XAMPPにAPCとmemcachedを導入しました。

サクッと導入できるかと思いきや、解説されているリンクが切れていたりと、なかなか苦労しました。


XAMPPにAPCを導入する

今回APCを導入するバージョンは、XAMPP 1.8.2PHP 5.4.31です。

APCのダウンロード

APCは「APC – Win Web Dev」でダウンロードできます。

いくつか種類があるのですが、表記にtsとあるのはthread safentsとあるのはnon thread safeという意味。ということでApachetsバージョンIISntsバージョンを使います。
ということで、今回XAMPPにインストールするのはAPC 3.1.14 beta for PHP 5.4 (Win7/2008)です。win7とありますが他のWindowsでも問題なく動きます。

apc-memcached01

解凍すると「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を検索する。

apc-memcached02

念の為にPHPでも確認してみます。

<?php
if ( function_exists( 'apc_store' ) ) {
	var_dump("apc 有効だよ");
} else {
	var_dump("apc 有効じゃないよ");
}
?>

XAMPPにmemcachedを導入する

今回導入するバージョンはPHP 5.4.31dllは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を確認。

apc-memcached03

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 セキュリティの重要な警告」ウィンドウが出ますが「ブロックを解除する」ボタンをクリックします。

apc-memcached04

他にも以下のコマンドを使えます。

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を導入できました。



現在のページを共有する



現在のページに関連する記事


おすすめの記事


いただいたコメントなど

  1. 0XY のコメント:

    サーバ構築の際、参考になりました。
    さて、記事中ほどの”memcachedサーバをインストールする”のイメージ
    “apc-memcached04″にて赤枠の位置が間違っています。
    よろしければ修正願います。

    • oxy のコメント:

      ご指摘ありがとうございます。
      画像修正しました。
      真逆の意味になっていましたね。失礼しました。

コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。