TheSchwartzの代わりにGearman+libdrizzleでジョブキューサーバ作る

TheSchwartzはPHPのライブラリないのかね?
ざっと探したけど見つからなかったので、
Gearmanを代わりに使ってみる。

Gearman単体だと、キューがメモリ上に置かれちゃって、落ちたときとかに吹っ飛ぶのでlibdrizzleを使ってMySQLにキューを置くようにします。

# libevent-develが別途必要。
yum install libevent-devel

# 最初にlibdrizzleをインストール
wget http://launchpad.net/libdrizzle/trunk/0.8/+download/libdrizzle-0.8.tar.gz
tar xzf libdrizzle-0.8.tar.gz
cd libdrizzle-0.8
./configure
make
make install

cd ..

# gearmand インストール
wget http://launchpad.net/gearmand/trunk/0.14/+download/gearmand-0.14.tar.gz
tar xzf gearmand-0.14.tar.gz
cd gearmand-0.14
./configure
make
make install

インストールは簡単。


さて、MySQLはもう入ってる前提で。
DBつくってキュー用のテーブル作ります。

create database gearman_queue;
create table queue (
    unique_key VARCHAR(64) PRIMARY KEY,
    function_name VARCHAR(255),
    priority INT,
    data LONGBLOB
);

できた。

gearmand起動!

gearmand -q libdrizzle --libdrizzle-db=gearman_queue --libdrizzle-table=queue --libdrizzle-user=root --libdrizzle-password= -d -u root

試しにキューに突っ込んでみる

gearman -f testq -b payload

お、いけてそう

出してみる

gearman -f testq -w

payload
ってでればOK。

突っ込んでから、select * from queue;すると、ちゃんと入ってるのも確認。

わーい意外と簡単にできた。
使い勝手とかは後で書きます!