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

#excel #laravel-5.3 #maatwebsite-excel #laravel-excel

#excel #laravel-5.3 #maatwebsite-excel #laravel-excel

Вопрос:

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

Я уже пробовал 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:

Это потому, что в 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 желаемое значение.