@Keliorw

Как исправить ошибку памяти PHPSpreadSheet?

function __construct($urlFile){
            $this->file = $urlFile; // файл для получения данных
            $this->excel = \PhpOffice\PhpSpreadsheet\IOFactory::load($this->file); // подключить Excel-файл
            $this->excel->setActiveSheetIndex(0); // получить данные из указанного листа
            $this->worksheet = $this->excel->getActiveSheet();
            $this->conn_id = ftp_connect("адрес");
            $this->loginFTP = ftp_login($this->conn_id, "логин", "пароль");
            $this->StreetMas = array(
                "0" => "A",
                "1" => "B",
                "2" => "C",
                "3" => "D",
                "4" => "E",
                "5" => "F",
                "6" => "G",
                "7" => "H",
                "8" => "I"
            );
        }


Есть следующий код, который должен подключать файл для обработки его скриптом, но при вызове функции __construct выдаётся следующая ошибка:
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 83886080 bytes) in ПУТЬ/phpspreadsheet/src/PhpSpreadsheet/Collection/Memory.php on line 66


Ошибка возникает, при загрузке файла в память.
Размер файла: 7.5мб
Кол-во строк: +/- 240000
  • Вопрос задан
  • 477 просмотров
Пригласить эксперта
Ответы на вопрос 1
vshemarov
@vshemarov
PhpOffice неимоверно жрет память, и у меня возникали проблемы даже с файлам в десятки тысяч строк, а тут 240тыс. Если нужны только данные, а оформление ячеек читать не нужно, то советую использовать https://github.com/aVadim483/fast-excel-reader - жрет памяти в разы меньше и работает гораздо шустрее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы