
photo credit: Anne Helmond
またしても、エラそうなタイトルをつけてしまいました(w
今日一日、「やらないといけない仕事」をほっぽって「100%趣味でPCに向かう」というのをやってみました。
実はそういうことはあまりしないのですが、もう少しPCをいじるのが好きになる努力の一環として。
そんな中、「PHPで分散処理するフレームワークってないのか?」と急に思って調べてみました。
PHPには、ソケット通信やプロセス制御やIPCをつつく関数がちゃんと(?)揃っています。
でも、世間にはほとんどその辺の情報はながれてないし、だれもPHPで分散処理しようなんて思ってないみたい。
「msg_get_queue」なんてキーワードで検索しても、なぜかいろんなサーバーで公開されているPHPマニュアルがヒットするばかりです。
分散処理というと、最近ではErlangが流行ってます。
もちろん、Javaも(Apache Hadoopってどうなの?)。
Pythonあたりでは、「Parallel Python」ってなライブラリ(?)があって、これで遊んでいる人は結構いるみたい。
Rubyあたりでは、楽天が研究所にRuby作者を向かえて(2007年?)分散処理プラットフォームを作っているらしい。
さらに・・・GoogleのMapReduceなシステムはC++。
PHPはというと・・・ほんとに日本じゃだれも気にしてないらしい。
複数RSSの読み込みなんかでcurl_multiな処理をやっている人は結構いるみたいだけど・・・
ただ、「XP Framework」っていうオープンソースプロジェクトがあって、これがどうやらPHPでJ2EEチックなフレームワークを作っている模様ではあります・・・が、分散処理に特化したものではありませんので、ちょっと手を出しづらい。
そんなわけで、自分が分散処理させたいって思ったら・・・
- 自分でPHP分散処理のフレームワークを用意する
- 他の言語を使う
のどちらかのオプションになります。
ちょっと考えちゃいますよねぇ〜(w
分散処理したいといっても、自前の巨大データを処理したいだけなんで、使い慣れた言語でさくっとやりたいところなんですが・・・
- プロセスのデーモン化
- プロセスのfork&管理
- プロセス間のソケット通信
- プロセス間のメッセージキュー通信
あたりを順繰りに組んでいくとPHPでも分散処理フレームワークを作れそうな気がします・・・「よっしゃやろ」とすぐに言えないボクですが、ちょと考えてみようかな(w
