時間制限がなく、max_execution_timeが0のスクリプトを作成しました
私はその仕事が終わるまで、またはユーザーが中止する(ブラウザからキャンセルする)まで作業する必要があります。
ユーザーがブラウザからのページの読み込みを中止したときに、スクリプトがサーバーによって強制終了されたことを確認するにはどうすればよいですか?これはスクリプトをすぐに強制終了しますか、それともクラスの__destructorが以前に呼び出されますか?
これがajaxによって呼び出されると仮定すると、ユーザーが他のスクリプトを強制終了するスクリプトによって処理されるajaxリクエストを送信するWebページを離れるときのイベントハンドラーを追加できます。
これは、スクリプトの起動時にスクリプトにファイルを作成させることで実装できます。次に、そのファイルがまだそこにあるかどうかを確認するために、時々チェックします。そうである場合は継続し、そうでない場合は終了します。
秘訣はファイル名を見つけることです。これを行う方法は、すべてのページリクエストに一意のユーザーIDを与えることです。また、「worker」スクリプトと「kill」スクリプトの両方が、URL(GET)内の同じユーザーIDで呼び出されます。
私の理解では、ユーザーがページの読み込みを中止したときにphpを使用してスクリプトの実行を停止する方法はありません。「中止」とは、ページの読み込み中に[停止]をクリックするか、ブラウザを閉じることを意味すると思います。