#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
желаемое значение.