SHOEISHA iD

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

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

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

Zend Framework入門

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

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

 最後に、実装されている機能の一覧を返すgetCapabiliteisメソッドです。

[リスト7]実装された機能(File.php)
public function getCapabilities()
{
    return array(
        'create'        => false,
        'delete'        => false,
        'send'          => true,
        'receive'       => true,
        'deleteMessage' => false,
        'getQueues'     => true,
        'count'         => false,
        'isExists'      => false,
    );
}

 このように、提供されている機能については「true」となっているような配列を返すようにします。

 このFileアダプタを利用した例を示します。

[リスト8]Fileアダプタを利用した例(file_test.php)
require 'Zend/Queue.php';
require_once 'File.php';

/* メッセージキューの作成 */
/* オプションの指定 */
$options = array('name' => 'codezine_queue',
		 'driverOptions' => array(
                   'file' => 'codezine_queue'));//(1)

/* Arrayアダプタを利用したキューの作成 */
$queue = new Zend_Queue('File', $options);

receiveメソッドの返り値

 Zend_Queueのreceiveメソッドは、前回述べたとおりSPLイテレータを実装したクラスで返すことになっています。ここに関してこれ以上の制限はないのですが、標準のアダプタは全て、

  • 各メッセージはZend_Queue_Messageオブジェクト
  • receiveメソッドの返り値はZend_Queue_Message_Iteratorオブジェクト

 として返しています。

 Zend_Queue_Messageクラスはメッセージを格納するためのクラスです。コンストラクタは配列を受け取り、その配列の中の「queue」要素と「data」要素によってオブジェクトの初期化を行います。

[リスト9]Zend_Queue_Messageクラスの使い方
$options = array();

//(1)queue要素にはキューを設定
$options['queue'] = $this;

//(2)data要素には実際のデータを
$data = array('body' => 'message 1');
$options['data'] = $data;

//(3)コンストラクタ
$message = new Zend_Queue_Message($options);

//(4)データへのアクセス、出力
echo $message->data;

 ▼

message 1

 (1)(2)で初期化のための配列の要素を設定し、(3)でコンストラクタを呼び出しています。(2)で設定された配列のdata要素は、(4)のように、作成されたオブジェクトのフィールド要素としてアクセスできます。

 Zend_Queue_Message_IteratorクラスはZend_Queue_Messageを格納するためのクラスで、同様に「queue」要素「data」要素を持つ配列で初期化します。

[リスト10]Zend_Queue_Message_Iteratorクラスの使い方
$options = array();

//(1)queue にはキューを設定
$options['queue'] = $this;

//(2)queue はメッセージの配列
$data = array($message1, $message2, $message3);
$options['data'] = $data;

//(3)queue はメッセージの配列
$messages = new Zend_Queue_Message_Iterator($options);

//(4)SPLイタレータとしてアクセス
foreach ($messages as $i => $message) {
    /* メッセージの中身の確認 */
    echo $message->body, "\n";
}

 先程と同様に(1)~(3)でデータの設定とオブジェクトの作成をしています。(4)のように、作成されたオブジェクトはSPLイタレータとしてアクセスできます。

おわりに

 今回はZend_Queueコンポーネントの2つのアダプタの利用法について見た後、アダプタを自作する方法やStompプロトコルを直接送受信する方法について見てみました。軽量なMemcacheQから本格的なウェブアプリプラットホームのZend Platformなど、さまざまな環境とZend_Queueを組み合わせられることが分かったと思います。

 次回はユニットテストの記述を支援する、Zend_Testコンポーネントについて取り上げたいと思います。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー