7

私は PHP で単純なアプリケーションを作成しています。これは、かなり集中的な MySQL 更新セットを時折実行する必要があります。これがユーザーに遅延を引き起こすことを特に望んでいないので、pcntl_fork() を使用することを考えています。

ただし、これが実際にどのように機能するかはわかりません。親プロセスが終了した後、子プロセスは引き続き実行されますか? 親プロセスが終了し、子プロセスが完了する前にユーザーのページの読み込みが完全に完了するか?

言い換えれば、これは PHP スクリプト (Apache で実行) に時間のかかる更新をユーザーを遅らせることなく実行させる安全な方法ですか、それともユーザーに多少の遅延を我慢するように頼むべきでしょうか?

4

4 に答える 4

3

親プロセスが終了し、ユーザーのページが完全に読み込まれ、子プロセスが続行され、子プロセスが正常に終了したかどうかに関するフィードバックが使用されなくなります。

于 2008-11-25T13:55:30.833 に答える
1

apache でそれを呼び出すとどうなるかは、誰かが詳しく教えてくれるかもしれませんが、使用している apache と php のバージョンと組み合わせによっては、必ずしも正しいとは限らない答えが得られる可能性があります。ajax を使用し、2 つのリクエストを行う必要があります。あなたが何をしているのかを示すページで一度応答し、次に ajax 呼び出しでステータスと実際に作業を行っている場所の 2 番目の要求をポーリングします。

于 2008-11-25T13:56:57.913 に答える
0

それは悪い考えだと思います。私は同様のことをしました、そして、apacheは親の出力をその子にリダイレクトします。つまり、ブラウザには子プロセスの1つからの情報が表示されます。詳細については、
ここをクリックし
ください。お役に立てば幸いです。

于 2012-08-02T07:31:15.667 に答える
0

mod_php モジュールのフォークがまったく機能しないため、PHP が Apache で実行されている場合、関数 *pcntl_fork()* が未定義であるという警告が表示されます。その場合、代わりにexec()を使用して、コマンド ラインを使用して別の php ジョブを実行することをお勧めします。

于 2012-07-24T14:57:36.773 に答える