SHOEISHA iD

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

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

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

Zend Framework入門

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

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

PlatformJobQueueアダプタ

 Zend Platform Job Queueは、Zend Platformの一部として提供されている、PHPのジョブを格納する特殊なサーバです。PlatformJobQueueアダプタは最新のZend Serverバージョン5.0ではなく、Zend PlatformのJob Queueとのメッセージのやりとりに対応したアダプタなので注意してください。

準備

 Zend Platformがインストールされている必要があります。また、ジョブとして実行したいスクリプトを指定されたフォルダ(デフォルトでは「jobQueue」)に入れておく必要があります。

コンストラクタ

 PlatformJobQueueアダプタを利用するためには、次の2つのオプションを指定する必要があります(どちらも必須)。

PlatformJobQueueアダプタのオプション
名前 意味
daemonOptions.host Job Queueのホスト名とポート番号、書式は'ホスト名:ポート番号'
daemonOptions.password Job Queueにアクセスするためのパスワード

 例えばローカルホストで動作しているJob Queueにパスワード「codezine_password」でアクセスするには次のようにオプションを与えます。

[リスト2]PlatformJobQueueアダプタへのオプションの与え方の例(platformjobqueue.php)
//オプション
$options = array(
    'daemonOptions' => array(
        'host'      => 'localhost:10085',
        'password'  => 'codezine_password',
    ),
);

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

 こちらもジョブ管理専用のサーバを利用するためのアダプタなので、設定自体は簡単です。

メソッドの利用方法

 Zend PlatformのJob Queueは通常のメッセージキュー管理サーバではなく、PHPのジョブを管理するためのサーバです。そのため、メソッドの機能も他のアダプタとは随分違います。PlatformJobQueueアダプタでのメソッドの機能をまとめると、次のようになります。

PlatformJobQueueアダプタのメソッド
メソッド名 引数 機能
create、isExists、delete、getQueues   利用できない、呼び出したら例外が発生
count (なし) 実行中のジョブの数
send (次に説明) ジョブの追加、引数によって挙動が変化
receive $maxMessages 実行中のジョブの一覧を$maxMessages個まで、Zend_Queue_Message_PlatformJobオブジェクトの配列として取得する
deleteMessage $message $messageで指定されたジョブの実行を中止する。$messageはZend_Queue_Message_PlatformJobオブジェクトで指定する

 一般のメッセージキューを管理するためのメソッド(「create」メソッド、「isExists」メソッド、「delete」メソッド、「getQueues」メソッド)は呼び出された場合は例外が発生します。また、「count」メソッドが返すのは「キュー上のメッセージの数」ではなく、「処理中(未処理)のジョブの数」となります。

 ジョブをサーバに送るsendメソッドには、利用する方法が3種類あります。ジョブをスクリプト名で指定する方法、ジョブに関する情報を連想配列で与える方法、そしてジョブに関する情報が指定されているZendApi_Jobオブジェクトを渡す方法です。

 直接実行したいスクリプト名を指定する方法では、スクリプト名を直接文字列として指定します。なお、この場合はスクリプトに引数を指定できません。

$queue->send('test_job.php');

 ジョブへの引数や、ジョブへの細かい制御を行いたい場合には配列ないしZendApi_Jobオブジェクトを指定します。配列を利用する場合には次の要素を指定できます。

sendメソッドの引数
要素 説明
script ジョブとして登録するスクリプトの名前(必須)
priority ジョブの優先順位
name ジョブの説明
predecessor 前提となるジョブのID、前提のジョブが終了するまでこのジョブは実行されない
preserved Job Queueの履歴に、登録するジョブを残すかどうか、デフォルトでは「false」
user_variables ジョブへ渡す引数を連想配列の形で指定する
interval ジョブが何秒おきに起動されるかを指定する、デフォルトは「0」で、一回のみ実行される
end_time この時刻が指定されている場合には、この時刻以降にはジョブが起動されない
schedule_time ジョブを起動すべき時刻をUNIXタイムスタンプで指定、デフォルトは「0」で、その場合にはジョブをすぐに起動する
application_id ジョブのID、デフォルトでは「null」で、その場合には自動的にIDが割り振られる
※注意

 ZendApi_Jobオブジェクトで指定する場合にも、ZendApi_Jobクラスのコンストラクタに配列を与えることで、同じように各要素を指定できます。

 なお、いずれの方法で呼び出された場合でも、sendメソッドはZend_Queue_Message_PlatformJobオブジェクトを返します。

次のページ
Stompプロトコル

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

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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー