前提・実現したいこと
Excelファイルの中身をデータベースに登録するプログラムを作成しているのですが、
大きいデータを取り込み処理する際にのFatalErrorが発生しています。
Excelの構成としては以下の通りです。
シート件数:50
シート毎のデータ数:1万行、100列
phpのmemory_limit を1024MB変更してみましたがNGだったため、
そもそも処理に問題があるのではないかと思い投稿しました。
プログラミング初心者のため、やり方が間違えていましたらご教授お願いします。
【環境】
・php 7.4
・laravel 4.2.9
発生している問題・エラーメッセージ
Allowed memory size of 1077936128 bytes exhausted (tried to allocate 8192 bytes)
該当のソースコード
php
1$reader = new Xlsx(); 2$spreadsheet = $reader->load(self::fileDir. $fileName); 3$cntSheets = count($spreadsheet->getAllSheets()); 4 5for($i = 0; $i <= ($cntSheets-1); $i++){ 6 $sheet = $spreadsheet->getSheet($i); 7 $sheetData = $sheet->toArray(); //ここでFatalError発生 8 $sheet->disconnectCells($i); 9 10 //別メソッドでアップロードを実施 11 $this->uploadData( $sheetData ); 12} 13 14$spreadsheet->disconnectWorksheets(); 15$spreadsheet->garbageCollect();
試したこと
Excelデータを配列に格納後のdisconnectCellsの実施。
あなたの回答
tips
プレビュー