• 締切済み

スレッド?プロセス?複数鯖で分散処理をしたいのですが。

複数のサーバを使って処理を分散したいと考えています。 鯖Aにあるa.phpを動かす(指令:鯖Bにあるb.phpを動かせ) ↓ 鯖Bにあるb.phpが起動(指令:鯖Cにあるc.phpを動かせ) ↓ 鯖Cにあるc.phpが起動(鯖Dにあるd.phpを.....) ↓ ....(ry としていきたいのです。 しかし a.phpに file(http://example.com/b.php); と書いてみたのですが、これではb.phpの処理終了まで鯖Aのa.phpが待機することになってしまいます。 結局b.phpの処理終了というのはc.phpの処理終了=d.phpの処理終了・・・・・と言うことなので、a.phpは処理時間は変わらない(寧ろ他鯖との接続分長くなる)のです。 図 a.php(b.php、c.phpの終了まで待ってしまう) 始 | トb.php | 始 | | | トc.php | | 始 | | | | | 終 | 終 | 終 a.phpがb.phpに実行命令を出したら、a.phpは即終了できるように(待たないように)できないのでしょうか?(引数やらは帰ってこなくていいので。) こうしたい a.php 始(呼び出したphpの帰りを待たずに終了) | トb.php | 始 終 | 終 トc.php 終 | 始 終 終 | 終 終 トd.php 終 終 | 始 終 終 終 | 終 終 終 ト........ AAヘタですいません・・・・・ 「ト」っていうのは呼び出したってことです。

みんなの回答

回答No.1

・a.phpではb.phpにLocateさせるヘッダーをだして、 それを受け取ったブラウザに自動で次のb.phpにアクセスさせる (ブラウザを途中で強制終了されたりして、不安定か) ・a.phpで子プロセスをforkして、そこからb.phpを呼び出す。 (a.phpはすぐに終わってブラウザに応答が変えるが、サーバー上のプロセス数は増える) ・キューイングシステムを自前で作る  a.phpではb.php実行のキックを行う処理だけ行いb.phpの終了は待たない。  たとえば、a.phpからbサイトにメールを送信して、bサイトはそのメールをパイプで受け取ってb.phpを自動実行するとか、  a.phpはbサイトに処理内容を書いたファイルをftpとかで送って、b.phpはそのファイルをcronでポーリングしているとか。

関連するQ&A

専門家に質問してみよう