web-dev-qa-db-ja.com

長時間実行REST PHPのAPI、非同期?

PHPで構築されたRESTful APIがあります。 POSTリクエストのDBへの保存がトリガーされます。問題は、実行時間の長いタスクをサポートする必要があることです。たとえば、ユーザーがPOST処理に数分かかり、待たなければならないのは良い選択肢ではありません。

私が今から学んだことから:ベストプラクティスの1つは次のようなものです-ユーザーはデータを含むPOSTリクエストを送信し、APIはステータス202 Acceptedを返し、ユーザーのURLを含むロケーションヘッダーを送信します結果が得られます(準備ができると)。

しかし、PHPに非同期/マルチスレッド機能がない場合、どうすればこれを実現できますか?私のエンドポイントはステータス202を返し、プロセスをトリガーする必要があります(DBへの書き込みを開始)。

私は、ユーザーがPOSTリクエストを結果が得られるまでリクエストするのを待っているようにしたくありません(したがって、説明したように発生する必要があります)。

誰かが何か考えがありますか?

1
stubborn

2つのアプリケーションが必要です。

Webサイトは、ジョブをデータベースまたはキューに保存するだけです。

ワーカーアプリケーションはキューからジョブを取得し、ジョブを実行して、結果をデータベースに書き込みます。

6
Ewan