特定のリクエストの後にバックグラウンド スレッドを作成し、それを常に実行したいと考えています。スレッドは現在のリクエストをブロックしません。
実装プロセス中に、バックグラウンド スレッドが現在のリクエストをブロックし、Thread::detach が実行されるとページがデータを待機することになることが判明しました。公式ドキュメントには次のように記載されています。この方法の使用はお勧めしません。このエラーが次のことに関連しているかどうかはわかりません。
ディスカッションへの返信(解決策)
この機能を実装するにはメッセージキューを使用することをお勧めします
マルチスレッドを使用するには? コードを 1 行だけバックグラウンドで実行するだけで、現在のプロセスはブロックされません。
exec("php task.php > /dev/null &")
デタッチの必要はありません 子プロセスの終了を待っていると、当然リクエストがブロックされます
この機能を実装するにはメッセージキューを使用することをお勧めします
通信データ量が比較的大きいため、メッセージキューは適していません。 コマンドパイプラインを使用するのが適していると思います。
これも方法ですが、同時実行量が多いとリソースを消費しすぎるのが心配です。 これらの処理をバックグラウンドで実行したい理由は、時間がかかる。