SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

PHPアプリでメッセージキューサーバを活用する - Zend_Queue -

Zend Frameworkによる実践的なPHPアプリケーション開発 33

Memcacheqアダプタ

 MemcacheQはMemcache上に実装された単純で高速なメッセージキュー管理サーバです。前回紹介したApache ActiveMQ同様、メッセージキューに特化したサーバなので利用方法も簡単です。

準備

 MemcacheqアダプタはPHPのMemcacheモジュールを利用していますが、通常は無効になっています。PHPのMemcacheモジュールはPECLで提供されていますが、MemcacheモジュールをPECL経由でビルドするのは、Windowsでは多少の手間がかかります。ここはコンパイル済のDLLをダウンロードしてから、モジュールを有効にする方法を紹介します。

 Windows向けにコンパイル済のモジュールはここから取得できます。ここにある「php_memcache-2.2.6-5.3-vc9-x86.zip」をダウンロードして、中にある「php_memcache.dll」をPHPの拡張が入っているフォルダ(extフォルダ)へコピーします。

 その上でモジュールを有効にするためには、php.iniの末尾に次の一行を追加します。

extension=php_memcache.dll

 また、MemcacheQはUNIX風のOSで利用されることを想定して開発されているため、Windowsから利用は難しいようです。利用したい場合にはLinux等が走っている外部サーバを準備して、その上でMemcacheQを実行するのが良いでしょう。

 Linux等でMemcacheQを利用するためにはソースコードを入手し、コンパイルする必要があります。インストールの方法はここにありますが、要約すると次のようになります。

  • (前提)Berkley DB 4.7以降をインストールしておく
  • (前提)libevent 1.4以降をインストールしておく
  • MemcacheQをコンパイルして実行

 筆者の環境では、Memcacheqのバージョン0.2.0を取得/ソースコードを展開した上で、以下のようにMemcacheQをコンパイル/実行しました。

$./configure --with-bdb=/usr/local/BerkeleyDB.5.1 --with-event=/usr/local/
(configureの出力)
$make
(makeの出力)
$mkdir ~/tmp/memcacheq
$./memcacheq -r -H ~/tmp/memcacheq -v
[コラム]MemcacheQをWindowsで走らせたい

 Windows上でLinux風の環境を提供するシステムの一つにCygwinがあります。Windows上でMemcacheQを動作させたい場合にはCygwinを利用する方法があります。その場合には、ネットワークまわりに要求される機能の関係でCygwinのバージョン1.7以降を利用する必要があります。

コンストラクタ

 MemcacheQは単純なメッセージキューサーバなので、ほとんど何も設定せずに利用することが可能です。コンストラクタで設定することができるオプションは次のとおりです。

Memcacheqアダプタのオプション
名前 意味
name メッセージキューの名前
driverOptions.host MemcacheQが実行されているホスト、デフォルトでは'127.0.0.1'
driverOptions.port データベースにアクセスするためのポート、デフォルトでは'22201'
※注意

 前回同様、名前に含まれる「.」は配列の配列を表しています。

[リスト1]MemcacheQアダプタへのオプションの与え方の例(memcacheq.php)
//(1)オプション
$options = array(
    'name' => 'codezine_queue',
    'driverOptions' => array(
        'host'      => 'localhost',
        'port'  => '22201',
    ),
);

//(2) コンストラクタ
$queue = new Zend_Queue('MemcacheQ', $options);

 (1)では与えられるオプションを全て設定していますが、例えばローカルホストでMemcacheQが動作している場合では「host」「port」のどちらも省略可能なため、指定する必要があるのは「name」だけになります。

各メソッドの制限

 deleteMessageメソッドとcountメソッドを利用できません

 MemcacheQは、メッセージを取得した時点でキューからメッセージを削除します。そのため、メッセージを明示的に削除するdeleteMessageメソッドは利用できません。deleteMessageメソッドが呼び出された場合には例外が発生します。

 また、MemcacheQはキュー内にあるメッセージを数える方法を提供していないため、countメソッドも利用できません。countメソッドが呼び出された場合も、やはり例外が発生します。

次のページ
PlatformJobQueueアダプタ

この記事は参考になりましたか?

Zend Framework入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5744 2011/02/28 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー