Web版の検索機能を作りました。
検索はフロントデスクによって開始され、バックグラウンドで実行され、検索結果が返されます。
フォルダー内に大量のファイル (20,000 個以上) があるフォルダー検索に遭遇すると、検索時間が非常に長くなります (結果が得られるまでに約 2 分かかります) 場合によっては、待ちきれずに [停止] をクリックしてしまうことがあります。 。 検索。
リーリークリックして検索を停止すると、フロントデスクは実際に停止しました:
ただし、バックグラウンドの PHP スクリプトはまだ実行中です (PHP スクリプトの実行時間の最大値を 3 分に設定しています)。ページが更新されるたびに長い時間がかかります (1 分以上)。比較的正直な状況 (開始されたのは 1 つだけ) の場合、バードファイアが始まったときにマウスが激しくクリックしたため、サーバーを再起動する必要があったと思います... ため息 (以下は、2 つまたは 3 つだけの狂ったクリックの結果です)。クリックすると、最長リクエスト時間は 5 分に達しました...)!
リクエストを停止するときにバックグラウンドのphpスクリプトの実行を終了する方法はありますか? ?
Web版の検索機能を作りました。
検索はフロントデスクによって開始され、バックグラウンドで実行され、検索結果が返されます。
フォルダー内に大量のファイル (20,000 個以上) があるフォルダー検索に遭遇すると、検索時間が非常に長くなります (結果が得られるまでに約 2 分かかります) 場合によっては、待ちきれずに [停止] をクリックしてしまうことがあります。 。 検索。
リーリークリックして検索を停止すると、フロントデスクは実際に停止します:
ただし、バックグラウンドの PHP スクリプトはまだ実行中です (PHP スクリプトの実行時間の最大値を 3 分に設定しています)。ページが更新されるたびに長い時間がかかります (1 分以上)。比較的正直な状況 (1 つだけが開始されている) の場合、Bird Fire が開始されたときにマウスが激しくクリックしたため、サーバーを再起動する必要があったと思います... ため息 (以下は、わずか 2 ~ 3 回のクリックの結果です)。 、最長リクエスト時間は 5 分に達しました...)!
リクエストを停止するときにバックグラウンドのphpスクリプトの実行を終了する方法はありますか? ?
いいえ、できることは検索パフォーマンスを最適化することだけです
最初に始める唯一の方法は、検索パフォーマンスを最適化することです。 HTTP プロトコルには、バックグラウンドでリクエストの終了を開始するための「リクエスト」がありません。また、フロントエンド サーバーが nginx を使用している場合、PHP アプリケーション サーバーはクライアントが切断されたことさえ認識しません。
この場合、最適化のバックグラウンドからのみ開始できます。