2012-05-06 17 views
1

ユーザーがURLに行ったときに発生するアクションがあります。このアクションには、MYSQLデータベースの膨大な量のinsert-updateが含まれており、処理が完了するまでには時間がかかります。ユーザーが別のページに切り替わってもこの操作が継続するかどうかは疑問でした。私はPHPがサーバー側であるので、それを期待しています。しかし、私はこれについて明確な説明をしたいと思います。誰でも?HTTPリクエストとPHPプロセス

+0

を使用する必要があります、ユーザーが切断にもかかわらず、実行中のスクリプトを維持する必要がある場合は、なぜあなたは、バックグラウンドでタスクを実行しないでください。ユーザの行動は、彼がスクリプトを実行することとは無関係である。 –

答えて

4

いいえ、ApacheとPHPのデフォルトの動作は、ユーザーが切断するとスクリプトを終了させることです。この切断は、接続が切断された後であればいつでも実行できるため、スクリプトは何時間も実行されたり、即座に停止したりする可能性があります。一般的には、スクリプトが何らかの出力を試みたときに強制終了が発生します。

あなたは、あなたがこのような場合に

ignore_user_abort(TRUE); 
+0

私が気づいたのは、実際にユーザーが他のページに移動しようとしても、スクリプティングが完了するまで可能ではありません。スクリプトが実行されているというメッセージをユーザに返すことができるようにするにはどうしたらいいですか?ユーザは完了したら通知を受けます。ユーザーはスクリプトがサーバー上で実行されている間、他の作業を行うことができます。 – nezgerland

+0

セッションを使用していますか? PHPがセッションファイルを積極的に使用している間、PHPはセッションファイルをロックします。他の並列リクエストを進めるには、長期実行スクリプトで 'session_write_close()'を実行する必要があります。 –

+0

はいセッションを使用しています。 session_write_close()をやっていないので、間違いなく私に面白いです:) ..ありがとう! – nezgerland

関連する問題