Первая проблема
Allowed memory size of 134217728 bytes exhausted (tried to allocate 65011744 bytes)
даже если ставлю memory_limit -1 скрипт падает. Памяти на сервере 8гб
Использую такой код. Пытался загружать чанками проблема сохраняется. Вопрос в том как загрузить большой файл ~2.5 гб. без использования большого объема оперативной памяти.
И второй вопрос как разахивировать архив только после полной его загрузки
$sFileName = $this->obRequest->get('filename');
$sFilePath = self::EXCHANGE_FOLDER.DIRECTORY_SEPARATOR.$sFileName;
if ($sFileName === 'orders.xml') {
throw new \LogicException('This method is not supported');
}
if (!Storage::exists(self::EXCHANGE_FOLDER)) {
Storage::makeDirectory(self::EXCHANGE_FOLDER);
}
if (!Storage::exists($sFilePath)) {
Storage::put($sFilePath, file_get_contents('php://input'));
}
Storage::append($sFilePath, file_get_contents('php://input'));
try
{
if (Settings::getValue('catalog_accept_as_zip')) {
$obZip = new \ZipArchive();
$obZip->open(storage_path(sprintf("app%s%s", DIRECTORY_SEPARATOR, $sFilePath)));
$obZip->extractTo(storage_path(sprintf("app%s%s", DIRECTORY_SEPARATOR, self::EXCHANGE_FOLDER)));
$obZip->close();
//Storage::delete($sFilePath);
}
}
catch(Exception $e)
{
return $this->successResponse();
}
return $this->successResponse();