Laravel-excel: [質問]許容メモリサイズ。 バグかどうか?

作成日 2020年03月10日  ·  8コメント  ·  ソース: Maatwebsite/Laravel-Excel

前提条件

  • [x]読んで理解した: https
  • [x] Laravel Excelのバージョンがまだサポートされているかどうかを確認しました: https
  • [x]あなたの質問が以前にまだ尋ねられていないことを確認しました。
  • [x]課題テンプレート全体に記入

バージョン

  • PHPバージョン:7.1
  • Laravelバージョン:5.5。*
  • パッケージバージョン:^ 3.0

説明

エラーが発生しました
image

追加情報

memory_limit = 1536M-これ以上設定できません
私のコード
image

Excel::download(new ReportExport($data), 'excel.xlsx');

$data 500000行のデータを収集します+
どうすればそんなに多くのデータを書くことができますか?

question

最も参考になるコメント

@fedeisas使用キューがエラーで失敗しました
Return value of Maatwebsite\Excel\QueuedWriter::exportCollection() must be an instance of Illuminate\Support\Collection, instance of Illuminate\Support\LazyCollection returned
しかし、Excel :: downloadはOKです

全てのコメント8件

ビューファイルを読み取るときに、PHPプロセスのメモリが不足します。 500000行はFromView戦略には少し多すぎると思います。 この記事が採用したアプローチを試すことができます//stefanzweifel.io/posts/lazy-collections-in-laravel-excel/

ビューファイルを読み取るときに、PHPプロセスのメモリが不足します。 500000行はFromView戦略には少し多すぎると思います。 この記事が採用したアプローチを試すことができます//stefanzweifel.io/posts/lazy-collections-in-laravel-excel/

Laravelバージョン5.5。*を使用しているため、cursor()を使用できません。 そして、データベースはそのような計算を許可していないので、phpでの計算を通じてデータベースからだけでなくデータを取得します。 いずれにせよ、ジェネレーターのExcelファイルに渡す前に、500,000行の配列を作成します。

@patrickbrouwers記事からアプローチを試しましたが、次のようになります。

Return value of Maatwebsite\Excel\QueuedWriter::exportCollection() must be an instance of Illuminate\Support\Collection, instance of Illuminate\Support\LazyCollection returned

@fedeisasどのバージョンのlaravelを使用していますか?

@patrickbrouwers

laravel/framework                            v6.18.1            The Laravel Framework.
maatwebsite/excel                            3.1.19             Supercharged Excel exports and imports in Laravel
phpoffice/phpspreadsheet                     1.11.0             PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine

キューに入れられた書き込みを使用しています。 多分それが問題ですか?

(S3を使用して)分散ワーカーでエクスポートを実行しようとしていますが、 FromQueryは非常に遅いです(3

だから私は怠惰なコレクションとcursor()にうまく切り替えようとしています。

@fedeisas使用キューがエラーで失敗しました
Return value of Maatwebsite\Excel\QueuedWriter::exportCollection() must be an instance of Illuminate\Support\Collection, instance of Illuminate\Support\LazyCollection returned
しかし、Excel :: downloadはOKです

FromQueryの懸念がある60Kデータまたは512Mのメモリ設定のLazyCollectionをまだエクスポートできません

これを実装するための他の設定はありますか?
https://stefanzweifel.io/posts/lazy-collections-in-laravel-excel/

このページは役に立ちましたか?
0 / 5 - 0 評価