エラーが発生しました
memory_limit = 1536M-これ以上設定できません
私のコード
Excel::download(new ReportExport($data), 'excel.xlsx');
$data
500000行のデータを収集します+
どうすればそんなに多くのデータを書くことができますか?
ビューファイルを読み取るときに、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/
最も参考になるコメント
@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です