2013.02.18
【PHP】Windows版 PHPへのmemcache組み込みメモ
Windowsでサーバー処理は面倒だな。
サーバーについては前に使っていたものがもう稼働済みなので
これをそのまま使う方向にしました。
PHPクライアントはWindowsもpeclあたりでインストールすればいいんじゃないかと
コマンドを叩いてみましたがどうも無理なようです。
全体的にWindows版はdllを自分でコンパイルするのが基本らしい。
しかしそれでは面倒なので誰かがコンパイルして配布しているものを使うのがベター。
ということで探します。
さっくりと5.3版は見つかるけど現在入れているのが5.4版がなかなか見つからない。
このあたりでそれっぽいのがあったのでこれで動作することを確認しました。
Link:memcached - Class 'Memcache' not found & PHP - Stack Overflow
ntsありとなしがあるけどたぶんこれはNonThreadSafe版かそうじゃないかという意味ではないかな?
自分はThreadSafe版なので何もついていない方を入れました。
あとはextにphp_memcache.dllを入れて、php.iniのextensionに加えて
Apacheの再起動をすれば使えるようになりました。
上記のものはMemcacheクラス(dがつかない)になります。
正式名称がmemcachedなのでdがつくほうかと思っていましたがどうも違うらしい。
ヘルプも2つあってどっちだかわかりにくい。
このあたりはもう少しわかりやすくならないものでしょうか。
こちらのヘルプが正しい。
Link:PHP: Memcache - Manual
自分がためしたサンプルはこちら。
<?php //クラスの存在チェック if( class_exists( "Memcache" ) ) { $m = new Memcache(); //接続先を追加 $m->addServer('localhost', 11211); //データ取得 $val = $m->get('key'); if( $val != FALSE ) { //データがあればそのまま表示する echo '設定あり:'.$val.'<br>'; } else { //データがなければ新規追加 $m->set('key', date('Y/m/d H:i:s'), 0, 10); //10秒だけ有効 echo '新規設定:'.date('Y/m/d H:i:s').'<br>'; } //--------------------------------------------------------- //キー情報の取得 $stats = $m->getStats(); $memcached_started_time = $stats['time'] - $stats['uptime']; $stats_item = $m->getStats('items'); $items = $stats_item['items']; foreach ($items as $slabclass => $item) { $stats_cachedump = $m->getStats('cachedump', $slabclass, $item['number']); foreach ($stats_cachedump as $cache_key => $v) { if (0 <= ($v[1] - $memcached_started_time)) { echo $cache_key.'<br>'; } } } } ?>
後半はmemcacheが現在有効なキーリストを列挙する処理になります。
こういうのはあると便利ですからね。
このページを参考にしました。
Link:memcached の無期限キャッシュを取得する方法 - do_akiの徒然想記
ということでなんとかmemcacheが動いてくれるようになりました。
memcacheをうまく使っていきたいですね。
関連記事