PHP で非同期処理(キューイング)
beanstalkd というジョブキュー管理サーバを使って PHP で非同期処理をしてみる。Ubuntu 10.04 にはパッケージが用意してあった。
beanstalkd のインストール:
$ sudo aptitude install beanstalkd
/etc/defaults/beanstalkd を編集:
# ↓以下のオプションを有効にするとジョブを永続化できる。 # DAEMON_OPTS="-b /var/lib/beanstalkd" START=yes
beanstalkd を起動:
$ sudo /etc/init.d/beanstalkd start
PHP 用クライアントライブラリは、
http://github.com/pda/pheanstalk
から取得。Pure PHP なので、ビルドにハマる心配がないのがいい。
どこかにダウンロードしたファイルを展開するだけで利用可能。
今回は、git を使ってみた。
$ git clone http://github.com/pda/pheanstalk.git
メッセージを投げる:
<?php require_once 'pheanstalk_init.php'; $pheanstalk = new Pheanstalk('127.0.0.1'); $pheanstalk->useTube('testtube')->put("ジョブメッセージ\n");
メッセージを受信する:
<?php require_once 'pheanstalk_init.php'; $pheanstalk = new Pheanstalk('127.0.0.1'); $job = $pheanstalk->watch('testtube')->ignore('default')->reserve(); echo $job->getData(); $pheanstalk->delete($job);