1

私の問題は次のとおりです。

HTTP リクエストは 2 分後にキャンセルされますが、サーバー側の処理は続行されます。

私は大規模なデータ処理を行っており、データベースには巨大なデータが含まれています。そのため、処理画面に通常のフォーム送信メソッドを使用しています。ブラウザコンソールを確認すると、リクエストステータスがキャンセルされます。しかし、サーバーでは、このリクエストがキャンセルされた後もプロセスが続行されますまた、リクエストがキャンセルされると、開くことができないファイルが自動的にダウンロードされ、ファイル拡張子もありません。

set_time_limit(0);

、しかし、状況は変わりませんでした。私のコードでは、コンテンツをファイルに書き込むコードをいくつか書きました。したがって、リクエストがキャンセルされた後、ファイルの書き込み操作は続行されます。このエラーを解決しようとしていますが、解決策が見つかりませんでした。助けてください自分。私はApacheサーバーを使用しています。

リクエストのステータス ヘッダーの詳細 私がやっているスクリーンショット プロセス:

 1.Selecting large number of data from a table which contains large number of data.
 2.Checks whether each record matches certian conditions
 3.Matching records are written into a file and that file is report generation
 4.Allowing the user to download the file after the process completion.

クライアントが特定の時間経過しても応答を受信しなかった場合、サーバーへの要求がキャンセルされると聞きました。これは私の問題ですか。そうであれば、どうすれば解決できますか?

4

1 に答える 1

0

PHPは、クライアントにデータを送信しようとするまで、リクエストがキャンセルされたことを知りません。これを定期的に行うことで、これを解決できるはずです。

echo '    '; flush();

ignore_user_abort が false の場合、これでスクリプトが終了します。

于 2013-08-08T09:35:27.953 に答える