PHP8/Symfony6 環境で何らかのマルチスレッドを実行したいのですが、次のように動作します:
約 100 万行を処理する原則リクエストを作成しています
これらの行を同時に処理する複数の並列プロセスを作成したいと考えています。 私のリクエストは、doctrine オブジェクトを提供する getResult() 経由で行われます。 オブジェクトの配列をパラメータとしてスレッドを作成する方法はありますか。それでは、「キュー」がデータでいっぱいになるたびにスレッドを作成しますか?
「pthreads」または「popen」に関する情報を見つけましたが、トピックが少し古いため、今でも関連があるかどうかはわかりません
この場合、Doctrine が行うことの 1 つは、クラスにデータコンテンツをハイドレートすることです。そのため、数百万のレコードはすべてクラスに変換され、メモリに保持されます。そこで、いくつかの提案があります: p>
while を使用して直接クエリを実行します:-
リーリー
fetchAll
誰かがコメントしたように、メソッドを使用してすべてのユーザーを一度に取得することもできますが、クエリで返されるユーザーが多すぎるとメモリ不足になる可能性があることに注意してください。上記の
whileループを使用すると、一度に 1 ユーザーのみをメモリにフェッチするため、メモリのパフォーマンスが向上します。
リーリーを使用できます