Laravel Excel を使用して Excel ファイルを読み取るように Laravel キューを設定しました。小さなファイルにはうまく機能します。
ただし、大きなファイル (100 MB) と 400k レコードの場合、時間がかかりすぎ、サーバーの 40 GB 近くの RAM を消費します。
queue:work コマンドを実行するようにスーパーバイザーを設定しました。私のサーバーのメモリは60GBです。 小さなファイルの場合はすべて問題なく動作しますが、大きなファイルの場合は動作しません。
テレスコープを使用してクエリ時間もチェックしましたが、どのクエリも長い時間はかかりませんでした。
P粉7262346482024-03-22 16:23:26
現時点では、あなたの質問に対する直接の答えはありません。多くは目標とする結果に依存します。それを解決するには自分なりの方法を考案する必要があります。
私が最も懸念していることの 1 つは、大きな Excel ファイルをチャンクまたはパーティション化してキューに入れることです。 Laravel ジョブのバッチ処理を利用できるかもしれません。
導入できるもう 1 つの方法は、マイクロサービス システムです。このシステムでは、これらの重いタスクが別のより優れたマシンによって実行されます。
しかし、先ほども言いましたが、このような問題に対する唯一の解決策はありません。これは自分で解決する必要があります。
P粉4550931232024-03-22 10:38:32
このような問題に直面しているすべての人に、Spout の使用をお勧めします。それはまるで魔法のように機能します。このために 3 つの PHP サービスを試しましたが、最終的にはスパウトのみが機能しました。
https://opensource.box.com/spout/