somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【php】memcached(windows)のインストール

memcachedのダウンロード:
 本家:http://memcached.org/(Windows用は無い)
 1.2.4:http://www.splinedancer.com/memcached-win32/
 1.2.6:http://code.jellycan.com/memcached/
 1.4系:http://labs.northscale.com/memcached-packages/(よく紹介されているけど、404)

php_memcache.dllのダウンロード
 http://downloads.php.net/pierre/から
 php_memcache-2.2.6-5.3-vc9-x86.zipをダウンロードし、展開する。
 C:\xampp\php\extにphp_memcache.dllを格納する。
 [PECL]ディレクティブにextension=php_memcache.dllを追記する。
 apacheを再起動する。
 ⇒VC9じゃなくて、VC6版でないとダメらしい・・・
 http://shikii.net/blog/downloads/php_memcache-cvs-20090703-5.3-VC6-x86.zipからダウンロードする。

 ※phpinfoにCompiler情報とmemcacheが載っていた⇒MSVC6 (Visual C++ 6.0)

下記コードを実行する。
コード参考:http://jp2.php.net/manual/ja/memcache.examples-overview.php
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("接続できませんでした");

$version = $memcache->getVersion();
echo "サーバのバージョン: ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$tmp_object->ary_attr = array(1, 'str', 'key' =< 'val');

$memcache->set('key', $tmp_object, false, 10) or die ("データをサーバに保存できませんでした");
echo "データをキャッシュに保存します (データの有効期限は 10 秒です)<br/>\n";

$get_result = $memcache->get('key');
echo "キャッシュから取得したデータ:<br/>\n";
var_dump($get_result);

sleep(10);
$get_result = $memcache->get('key');
echo "10秒後、キャッシュから取得したデータ:<br/>\n";
var_dump($get_result);


実行結果
サーバのバージョン: 1.2.6
データをキャッシュに保存します (データの有効期限は 10 秒です)
キャッシュから取得したデータ:
object(stdClass)[3]
  public 'str_attr' => string 'test' (length=4)
  public 'int_attr' => int 123
  public 'ary_attr' => 
    array
      0 => int 1
      1 => string 'str' (length=3)
      'key' => string 'val' (length=3)

10秒後、キャッシュから取得したデータ:
boolean false

おまけ
memcached.exeの存在するディレクトリに移動後、
下記コマンドを実行することでサービスに登録できる。(サービスで確認できる)
memcached.exe -d install

net start "memcached Server" で開始し、
net stop "memcached Server" で終了します。(Oracleはサービスとして起動していたことが分かった)

下記コマンドを実行することでサービスから削除できる。
memcached.exe -d uninstall

参考:
http://shikii.net/blog/installing-memcached-for-php-5-3-on-windows-7/
http://blog.makotokw.com/2009/09/28/windowsxamppphp-memcache/