Symfoware

Symfowareについての考察blog

phpからbeanstalkdに「beanstalk」でジョブを投入、取得する

Debianにbeanstalkdをインストールし、管理ツールを動かしてみました。

メッセージキュー管理「beanstalkd」をDebian 7にapt-getでインストールする
beanstalkdのweb管理画面「phpBeanstalkdAdmin」をインストールする

phpからキューにジョブを投入してみます。


クライアントツール



phpのクライアントツールは、いくつか種類があります。
https://github.com/kr/beanstalkd/wiki/client-libraries

1ファイルで動く「beanstalk」を使ってみることにしました。
https://github.com/davidpersson/beanstalk


wgetで必要なファイルをダウンロードしておきます。

wget --no-check-certificate https://raw.githubusercontent.com/davidpersson/beanstalk/next/src/Client.php




キューへの登録



キューへジョブを登録するサンプルはこんな感じになりました。


  1. <?php
  2. require_once('Client.php');
  3. use Beanstalk\Client;
  4. // beanstalkdに接続
  5. $beanstalk = new Client(array('host'=>'127.0.0.1', 'port' => 11300));
  6. $beanstalk->connect();
  7. // 任意のtube名を指定
  8. $beanstalk->useTube('flux');
  9. // データを登録
  10. $beanstalk->put(
  11.     1, // Jobの優先度
  12.     0, // 即時実行するか
  13.     1, // Jobの実行時間(分)
  14.     'job-data' // Jobのデータ
  15. );
  16. // 切断
  17. $beanstalk->disconnect();




実行後に管理ツールを見てみると、確かにジョブが追加されています。

462_01.png




キューの取り出し



キューの内容を取得するサンプルはこんな感じ。


  1. <?php
  2. require_once('Client.php');
  3. use Beanstalk\Client;
  4. // 接続
  5. $beanstalk = new Client(array('host'=>'127.0.0.1', 'port' => 11300));
  6. $beanstalk->connect();
  7. // fluxというチューブを監視
  8. $beanstalk->watch('flux');
  9. // ジョブの内容を取得&ロック
  10. $job = $beanstalk->reserve();
  11. // 取得できた内容を表示
  12. var_dump($job);
  13. // ジョブを処理したので削除
  14. $beanstalk->delete($job['id']);
  15. // 切断
  16. $beanstalk->disconnect();




登録した内容がbodyとして取得出来ました。

462_02.png

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2014/08/31(日) 18:42:38|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<pythonから「beanstalkc」でbeanstalkdにジョブを投入、取得する | ホーム | beanstalkdのweb管理画面「phpBeanstalkdAdmin」をインストールする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1480-4b585fc2
この記事にトラックバックする(FC2ブログユーザー)