Как исправить «Разрешенный объем памяти» при экспорте данных большого массива с помощью Laravel Excel 2.1? - PullRequest
0 голосов
/ 12 апреля 2019

Я настраиваю функцию экспорта на основе сгенерированного отчета, и у меня возникают проблемы при вставке строк / данных большого массива в лист с использованием метода Laravel Excel 2.1 fromArray. Есть ли альтернативный способ сделать это, чтобы не получить «Разрешенный размер памяти исчерпан»?

Я уже попробовал array_chunk метод, но все еще получаю ошибку исчерпания памяти.

$reportData = $this->report->run(); // Depending on the filters of the report, it can get upto 20,000 rows.
$headers = Input::get('selectedcolumns');

$data = [];
foreach($report['data'] as $value) {
    $row = [];
    foreach($headers as $header) {
        $row[$header['label']] = $value[$header['name']];
    }
    $data[] = $row;
}

return Excel::create('Excel', function($excel) use($data) {
    $excel->sheet('Sheet1', function($sheet) use($data) {
        ->sheet->fromArray($data);
    });
})->store('xls', false, true);

1 Ответ

0 голосов
/ 18 апреля 2019

Это потому, что в php.ini есть переменная с именем max_post_size.Если размер массива $ _POST увеличивается, чем задано в php.ini, массив $ _POST будет пустым.Вы можете использовать это ini_set('max_post_size, 50M) в своем скрипте, чтобы увеличить max_post_size.Это установит max_post_size в php.ini для текущего запроса.Вы также можете установить любой размер вместо 50M, указанного в этом примере.

Или, если вы хотите постоянно увеличивать max_post_size, вам следует обновить файл /etc/php/conf/php.ini и установить max_post_size до желаемого значения.

...