FuelPHPでGearmanを使う
FuelPHPからGearmanを使うライブラリを書きました。
fuel-gearman
https://bitbucket.org/takyam/fuel-gearman
Gearmanクライアント用のクラスと、OilコマンドのタスクであるところのGearmanワーカー用のクラスの2つから構成されています。
クライアント側はPECL/Gearman extensionのラッパーのようなもので、
ワーカー側は、Oilコマンドを叩いてるだけのとてもシンプルなものになっています。
今のところlocalhostのデフォポートのGearmanを参照にいくことしかできなかったり、
Oilコマンド以外に対応していないからBackground以外の処理ができなかったりと、
とりあえず動くことを確認したよレベルではあります。
全体で100行もないレベルなので、
動作その他はソース読んでもらえれば大した事してないのはわかるかと思います。
そもそもGearmanをはじめJobQueue/MessageQueueを利用した事がなく、
当初はResqueを使おうと思っていましたが、FuelPHPとの親和性が高いライブラリもなく、
冗長構成等を考えるに不安があったので、JobQueueとしてイロイロ揃ってる、
GearmanかRabbitMQを使おうかなと思っていました。
GearmanとRabbitMQのどっちが良いのか調べたのですが、
イマイチメリデメはっきりしなかったので、
とりあえずPECLのライブラリがあるGearmanを使ってみる事にしました。
- 障害時にJobが消失しないこと
- JobServerの冗長構成が取れること
- FuelPHPのModelなどにアクセスする事ができる事
このへんが要件かなぁと考えていましたので、このライブラリで最後のFuelPHPのつなぎ込みがいける事を確認でき、とりあえず安心しています。
ただ実際の案件にツッコめるほどのクオリティではないので、引き続き開発していきたいと思います。
何かご質問などありましたら、Bitbucketかこちらにコメントください。