Мне нужно написать класс, который берет данные из файла Excel, анализирует их и затем загружает в интернет-магазин. Это не имеет значения, у меня проблема с первым шагом — правильная загрузка данных из файла Excel. Как упоминалось выше, я использую Laravel Excel. У меня есть файл Excel размером 35 МБ, 12451 строк, и я просто загружаю его следующим образом:
Код: Выделить всё
$filePath = '../public/New_Products_2022-12-23.xlsx';
$import = Excel::toCollection([], $filePath);
$memoryUsage = memory_get_peak_usage(true);
$memoryUsageInMegabytes = round($memoryUsage / 1024 / 1024, 2);
dump($memoryUsageInMegabytes);
dd($import);
возвращает следующее:
Код: Выделить всё
198.0 // app/Http/Controllers/Ignored/TestController.php:28
array:1 [▼ // app/Http/Controllers/Ignored/TestController.php:29
0 => array:12451 [▶]
]
на загрузку этого файла потребовалось целых 21,97 секунды и 198 МБ ОЗУ (что не проблема, но если бы появился файл с 100 000 строк, так и было бы). Мой вопрос: есть ли способ поработать над этим, как Laravel Model::chunk? Я наткнулся на чтение чанка в документации Excel Laravel (
https://docs.laravel-excel.com/3.1/impo ... ading.html), но в данном случае оно связано с моделью UsersImport, чего я не могу сделать, потому что мне нужно проанализировать свои данные, прежде чем я смогу их загрузить. Поэтому я не хочу использовать какой-либо импорт, я просто хочу получить данные частями, проанализировать их и вернуть. Есть ли способ сделать это с помощью Laravel Excel? Я знаю об использовании генератора доходности, но, насколько я понимаю, это предполагает отказ от использования Laravel Excel.
Я пытался получить данные из файла Excel, проанализировать их, а затем обновить. на сайт моего магазина через API.
Подробнее здесь:
https://stackoverflow.com/questions/779 ... o-much-ram