Недостаточно памяти при загрузке файла Excel в laravel

Я пытаюсь загрузить лист Excel в laravel с помощью пакета laravel excel. Проблема, с которой я столкнулся, заключается в том, что даже после выполнения их инструкций, когда я пытаюсь загрузить свой лист Excel, он продолжает загружаться и загружаться. В файле журнала laravel говорится, что

 local.ERROR: Out of memory (allocated 1598029824) (tried to allocate 469762048 bytes) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1)

Размер файла только 70kb, а на моем php.ini я выделил память 8gb.

Код, который я использую для чтения файла Excel, приведен ниже.

 if ($request->hasFile('excelSheet')){
            $path= $request->file('excelSheet')->getRealPath();
            $data = \Excel::selectSheetsByIndex(0)->load($path)->get();
            echo'<pre>';
            print_r($data);
        }

Лист Excel, который я пытаюсь загрузить, состоит из нескольких листов, снимок экрана которых прилагается к вопросу. Кто-нибудь может сказать мне, как я могу получить эти данные или как я могу решить проблему с выделением памяти? Недостаточно памяти при загрузке файла Excel в laravel

Тогда я бы предположил, что PHP не уловил ваше изменение на 8 ГБ, поскольку ему не удалось выделить немного больше 1,5 ГБ. Вы уверены, что изменили правильный файл php.ini И перезапустили свой веб-сервер

RiggsFolly 10.03.2018 22:33
1598029824! == 8 ГБ
Mark Baker 10.03.2018 22:39

Но размер файла электронной таблицы не указывает на ее требования к памяти; количество ячеек (на всех листах, которые вы загружаете) гораздо более значимо

Mark Baker 10.03.2018 22:41

PS: phpExcel был заменен на phpSpreadsheet. Я думаю, что это тот же парень, так что можно предположить, что он сделал phpSpreadsheet больше, лучше и прекраснее.

RiggsFolly 10.03.2018 23:05

Вы пытались обойтись без пакета Excel? только с $csv = file($request->file('excel'));?

kevinniel 10.03.2018 23:11

Если вы пытаетесь только прочитать данные из файла или записать данные в новый файл, вы можете вместо этого попробовать пакет Spout от Box. Вы не получите тех удобных манипуляций с файлами, которые вы делаете с phpSpreadsheet, но он намного легче для объема оперативной памяти: opensource.box.com/spout/getting-started

pft221 11.03.2018 00:19

Вы используете php-fpm? Если да, попробуйте перезапустить это. Также проверьте max_post_size в php.ini.

user320487 11.03.2018 00:37

@RiggsFolly: да, изменения были зафиксированы и приняты php. Я пробовал использовать другой файл в ядре php размером 1,2 ГБ, который работал отлично, и мне очень жаль. я не понимаю, что означает ваш второй комментарий

user7747472 11.03.2018 06:05

@MarkBaker да, 1598029824! == 8GB может быть правильным, но для размера файла 70kb не должно потребоваться столько памяти. Я внес эти изменения, чтобы загрузить файл размером 3 ГБ, который находится в основном php ofrcourse. это первая попытка в laravel, «размер файла электронной таблицы не указывает на ее требования к памяти», да, возможно, вы правы в этом. Но у этого около 30 ячеек в каждой строке. поэтому ему не нужно столько памяти, я предполагаю, что он идет в цикле или что-то в этом роде

user7747472 11.03.2018 06:07

@btl да, мой max_post_size тоже 8gb,

user7747472 11.03.2018 06:08

30 ячеек в каждой строке? Сколько рядов? Одинаково ли это на всех трех листах? Собираетесь в петлю? Возможно, но маловероятно ... но я немедленно исследую возможность того, что в 250 тыс. Строк кода, составляющих PHPExcel, может быть ошибка, которая может поместить код в цикл, когда что-то, что может быть в каком-то файле электронной таблицы, срабатывает. Это

Mark Baker 11.03.2018 12:28

@MarkBaker да около 30 ячеек в строке, и сейчас у меня только 13 строк на листе 1, я получаю данные только с листа 1, оставшийся лист мне не нужен. Они предназначены только для проверки поля листа Excel

user7747472 11.03.2018 13:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
12
557
0

Другие вопросы по теме