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;すると、ちゃんと入ってるのも確認。
わーい意外と簡単にできた。
使い勝手とかは後で書きます!