BLOGTIMES
2011/12/25

pecl memcached をインストール

  memcached  php 
このエントリーをはてなブックマークに追加

PHP から memcached にアクセスするためには普通は PECL の memcachememcached のどちらかを使うことになると思います。末尾にdがついてるかついていないかという1文字の違いで紛らわしいのですが違うパッケージです。

以前 memcached を使い始めた頃は前者のライブラリを使っていたのですが、今回は後者のライブラリをインストールしてみます。PECL memcached は memcache プロトコルの実装を libmemcached を使って実現していることが特徴のようです。

以下、インストールメモ。

libmemcached のインストール

前述の通り、PECL memcached をインストールするにあたっては libmemcached が必要になります。CentOS5 なので下記の EL5 のビルド済みバイナリを rpm でインストールしてしまいます。バージョンがちょっと古いですが、これは PECL memchached の Cangelog に "Make it work with libmemcached up to 0.49." という記載があったためです。

wget ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/enterprise/5/olds/i386/libmemcached-0.49-1.el5.remi.i386.rpm wget ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/enterprise/5/olds/i386/libmemcached-devel-0.49-1.el5.remi.i386.rpm rpm -ivh libmemcached-0.49-1.el5.remi.i386.rpm libmemcached-devel-0.49-1.el5.remi.i386.rpm

PECL memcached のインストール

次に、PECL の memcached のインストールに入ります。

wget http://pecl.php.net/get/memcached-2.0.0b2.tgz pecl install memcached-2.0.0b2.tgz

インストールが完了したら php.ini に下記を追加して、 Apache を再起動します。

extension=memcached.so

テスト用サンプル

今回は簡単にコンソール2つ開き、片方でサーバを起動させ、もう片方でスクリプトを実行しました。

/usr/local/bin/memcached -u apache -s /tmp/memcached_test.sock -vv

実行した php スクリプトはこんな感じです。

pecl_memcached_test.php

<?php global $memcached; $memcached = new memcached(); $memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true); //$memcached->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY); $memcached->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_PHP); $memcached->setOption(Memcached::OPT_BUFFER_WRITES, true); $memcached->setOption(Memcached::OPT_NO_BLOCK, true); $memcached->setOption(Memcached::OPT_TCP_NODELAY, true); $memcached->addServer('/tmp/memcached_test.sock', 0); $memcached->setOption(Memcached::OPT_PREFIX_KEY, 'prefix1'); var_dump($memcached->set("aaa","bbb")); var_dump($memcached->get("aaa")); $memcached->setOption(Memcached::OPT_PREFIX_KEY, 'prefix2'); var_dump($memcached->set("aaa",array(1,2,3))); var_dump($memcached->get("aaa")); var_dump($memcached->flush()); var_dump($memcached->get("aaa"));

実行結果はこんな感じになります。

$ php pecl_memcached_test.php bool(true) string(3) "bbb" bool(true) array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } bool(true) bool(false)

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4665
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン