1

実行に時間がかかる PHP スクリプトへの AJAX 呼び出しを行っています。ここで、実行に 20 分かかるとします。また、呼び出しを開始した Web ページを更新するか閉じてから開いたとします。私の質問は次のとおりです。

  1. PHP スクリプトの実行が停止しますか?

  2. 実行し続ける場合、更新後にページに応答を強制的に戻すにはどうすればよいですか?

ありがとう。

** * ** * ** * ** * *更新* ** * ** * ** * ** *

なぜ長い時間がかかるスクリプトを持っているのかと尋ねる人もいます。次のことを説明しなかったのは私のせいだと思います。

を。このスクリプトはサイト管理者のみが利用でき、一般の人は利用できません

b. このスクリプトは、データ操作やデータベース関連の作業などの重い作業を実行するため、実行に長い時間がかかります。

c. スクリプトが実際にバックエンドで実行されている間、スクリプトが実行されていることを示すスピナーを使用して、メインページに戻ることができるように AJAX を使用しています。コールバック関数はスピナーを削除し、いずれかのメッセージを表示します。成功/失敗の状態。

4

2 に答える 2

2
  • PHP スクリプトの実行が停止しますか?

はい、ブラウザが切断されると、PHP は実行を停止します (更新/終了時に切断されます)。これを防ぐために使用できますがignore_user_abort(true)、それがあなたが望むものにとって最良の選択肢になるとは思いません。

  • 実行し続ける場合、更新後にページに応答を強制的に戻すにはどうすればよいですか?

いいえ、接続が失われているため、応答を返すものは何もありません。ajax が呼び出したときに長いプロセスをバックグラウンド プロセスとして呼び出し、すぐに応答を返し、バックグラウンド プロセスを動作させたままにする方が適切です。通常の ajax 呼び出しを使用して、プロセスが完了したかどうかを照会できます (たとえば、完了時にデータベースを更新します)。

ドキュメントから:

ただし、デフォルトの動作では、リモート クライアントが切断されるとスクリプトが中止されます。

于 2013-07-08T10:24:55.157 に答える
2

いいえ、実行が停止します。

代わりに cron ジョブを使用して、20 分かかるスクリプトを実行する必要があります。

そのページの制限時間を少なくとも 20 分に設定することを忘れないでください。

于 2013-07-08T10:17:04.873 に答える