0

2ページあります。1 つは form.php と ajaxprocessing.php です。

ユーザーが form.php の送信ボタンをクリックすると、ajax を使用して ajaxprocessing.php が呼び出されます。この ajaxprocessing.php には、データベース挿入クエリまたは何らかの関数を実行するために、たとえば 50,000 回のループがあります。

私の質問は、ユーザーが form.php の送信ボタンをクリックしてブラウザーを閉じるか、PC をシャットダウンした場合でも、ajaxprocessing.php はサーバーで引き続き実行されますか?

舞台裏でどのように機能しますか?

4

2 に答える 2

1

デフォルトでは、クライアントが切断されると PHP の実行は終了します。したがって、ajax 呼び出しがタイムアウトするか切断されると、PHP は実行を停止します。この動作は、構成設定をオンにすることで変更できますignore_user_abort

php.ini のコメントから:

; 有効にすると、ユーザーが中止した場合でもリクエストを完了することができます
。リクエスト。長いリクエストを実行する場合は有効にすることを検討してください
。ユーザーまたはブラウザのタイムアウトによって中断されました。PHP のデフォルトの動作
; この機能を無効にすることです。
; http://php.net/ignore-user-abort

于 2013-10-17T13:08:35.683 に答える
0

スクリプトが実行され続けるかどうかをテストする方法は、PHP スクリプトの最後に次のようなものを挿入することです。

mail('your@email.com', 'Script done', 'The script is now done');

原因のサーバーに sendmail がインストールされている場合は、スクリプトが完了すると電子メールが送信されます。これにより、ブラウザを閉じた後もスクリプトが実行され続けるかどうかがわかります。

于 2013-10-17T13:09:21.837 に答える