まず、タスクを並べ替えることをお勧めします。
- ユーザーが画像をアップロードする
アップロードの確認がユーザーに送信されます。
画像が処理されます
- 他の時間のかかる関数は
次に、次のオプションがあります。パート3と4を延期する方法です。
オプション1:ステップ2でユーザーに確認を送信し、ignore_user_abort()
画像の処理を続行して使用します(ユーザーには「ページの読み込み中」メッセージが表示されるため、最適ではありません。
オプション2:IBPスタイル。手順1〜2を実行してから、ある種のデータベースに処理ジョブを追加します。ランダムにユーザーに画像を表示します。画像は実際にはignore_user_abort()
、アイテムのキューを実行および処理するphpスクリプトにリンクしています。
オプション3:オプション2と同じですが、画像を表示しません。代わりに、cURLなどを使用してサーバーを所有するように要求する必要があります。アイデアは、リクエストを開始し、リクエストが終了するのを待たずに、メインスクリプトの実行を停止することです。
オプション4:5〜15分ごとに開始するcronスクリプトを開始し、必要なタスクを実行します。また、バックグラウンドで24時間稼働し、タスクのチェックの合間に20秒間スリープすることもできます。このオプションは、比較的忙しいWebサイトがある場合に最適です。
オプション5:キューにタスクを追加した後、exec()やshell_exec()などを実行して、バックグラウンドで処理スクリプトを台無しにしてみてください。
オプション2と3の実行方法の例:
非同期PHP呼び出し?
PHPで非同期GETリクエストを行うにはどうすればよいですか?