Process)はすべてPHPによって書かれた子プロセス生成用クラスライブラリです。PHP5以降の環境において、メソッド呼び出しによる子プロセスの自動生成を目的に作りました。時間のかかる処理を子プロセスとして実行し、結果を非同期で受け取ることなどができます。†なにも考えずにWEBサイトでDBを絡めたプログラムをつくっていると、ときどきSQL文が非効率的なのか、テーブルレコードが巨大になってしまったせいなのか、はたまたindexの作り方がわるいのか、、、なにしろ、えらく時間のかかってしまう処理になってしまうことがあります。ええ、これはもちろん、「設計が悪い」、「コーディングがへたくそ」と、言われてしまえば言い返すこともできないのですが、いわゆる運営側で使う管理ツールなどではどうしても扱うDBのサイズが大きくなりますし、検索条件なども複雑になってしまい、それに合わせてSQL文も複雑になるので、設計当初、目論んでいたよりも重い処理になってしまいます。なるとWEBサーバ側もしくはブラウザ側がタイムアウトしてしまい、結局使えない。なんてことも発生してしまいます。ループの回数が多いなど、自らのプログラムの処理が重い場合は、逃げの手法としてループ処理の中に嘘のhttpdを送ったりしています。}}しかし、1つのSQL文のDBアクセスが重くてタイムアウトしてしまう場合などは、もうお手上げで、このような逃げの手が打てません。結局、SQL文の見直しやDB側の処理速度向上などを行い、なんとかしなければなりません。「特定のメソッドだけ別プロセスで動けばなぁ。結果は非同期で返せればなぁ。それで、PRMPを作ったときに非同期で結果を返すような仕組みを考えていたので、それを単独でクラス化したのがこのeseChildProcessです。なんか、PRMP公開以後、アクセス数が増えてしまい、私は調子コイてるようなので、盲目に公開してみます(笑。反省ならサルでもできる...。†シンプルで(たぶん)軽量。子プロセスになると、1つのメソッドしか呼ばないので理解しやすい。(と思う)子プロセスから親プロセスに値を渡すことができるようにもコーディング可能。(サンプル参照)オープンソース。内部ではPOSIX関数も利用しているが、POSIX関数はconfigureデフォルトではON。-with-xmlrpcも使用すること。5.2.6(これ以外の環境で動かしたことはありません)PHP5の機能を使っているのでPHP4では動きませんが、大した機能をつかっているわけではないので、たぶん多少書き換えれば動くんじゃないかと思います。†eseChildProcess.incクラス本体sample_normal.php子プロセスを生成したのち正常に処理を終わらせ、子プロセスから実行結果を取得する実行サンプル。sample_stop.php子プロセスを生成したのち処理の途中で強制的に子プロセスを破棄する実行サンプル。sample_idle.php子プロセから親プロセスに随時値を送る実行サンプル。