Laravel Excel, проблема с памятью исчерпана при порции данных - PullRequest
0 голосов
/ 26 декабря 2018

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

public function process($file, Import $import)
{
    $newArr = $this->getColumnNamesReformatted($file);

    Excel::filter('chunk')->load($file)->chunk(1000, $this->setData($newArr, $import));
}

/**
 * @param $newArr
 * @param $import
 * @return \Closure
 */
public function setData($newArr, $import)
{
    return function ($results) use ($newArr, $import){

        foreach ($results as $row){
            $values = array_values($row->all());
            $data = [
                'import_id' => $import->id
            ];
            foreach ($values as $key => $value){
                if(in_array($newArr[$key], config('billing.columns'))){
                    $data[$newArr[$key]] = $value;
                }
            }

            $data['usage_start_at'] = Carbon::parse($data['lineItem_UsageStartDate']);
            $data['usage_end_at']   = Carbon::parse($data['lineItem_UsageEndDate']);
            Record::create($data);

            echo "|";
        }
    };
}

Я просто не могу понять, где утечка памяти.Кстати, проблема возникает только тогда, когда я запускаю код в Vagrant VM с 1 ГБ ОЗУ.Когда я запускаю один и тот же код локально - он выполняет все необходимые операции без проблем.

1 Ответ

0 голосов
/ 26 декабря 2018

Вы пытались увеличить «memory_limit» в php.ini.Если не попробовать один раз!

php -i |grep "php.ini"

Используя указанную выше команду, вы получите загруженный файл конфигурации.

Увеличьте значение memory_limit и перезапустите веб-сервер.

...