Laravel Excel::toCollection съедает слишком много оперативной памятиPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Laravel Excel::toCollection съедает слишком много оперативной памяти

Сообщение Anonymous »

Мне нужно написать класс, который берет данные из файла 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»