Я пытаюсь разархивировать огромный файл (400+M сжато более чем 4G в разархивированном виде), используя php zip-архив. Я распаковываю только один CSV-файл в заархивированном файле.. файл, который меня интересует, в разархивированном виде, имеет скорость более 4G.. Я получаю до 3 записей с конца файла, и процесс начинается в лала-земле. Я имею в виду, что процесс просто продолжается... нет вывода... нет ошибок, нет циклов, он просто продолжается... я понятия не имею, что он делает... мой код прост:
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE)
{
$num = $zip->numFiles;
for($i = 0; $i < $zip->numFiles; $i++)
{
$filename = $zip->getNameIndex($i);
// if its the file I want then...
$content = '';
// my output file .. yes I've already checked to make sure the dir exists
$unzipped = fopen($dir ."/2" . $filename , 'wb');
$fp = $zip->getStream($filename);
if(!$fp) exit("failed\n");
while (!feof($fp))
{
$chunkSize = 10240;
$contents = fread($fp, $chunkSize);
$fwrite = fwrite($unzipped, $contents);
}
fclose($fp);
fclose($unzipped);
}
$zip->close();
fclose($filename);
}
Я удалил операторы записи, которые переходят в другой файл, чтобы отслеживать ход выполнения. Я получаю большую часть файла ... (как я уже сказал, 3 записи не дотягивают до всего файла) ... но процесс, кажется, где-то идет ... это происходит на фриде, я просто не могу понять, что происходит .. Он не достиг eof.. источник не поврежден (проверено с помощью is_source($fp) непосредственно перед fread.. он не выдает ошибок.. закрытие браузера не останавливает его.. даже не может остановить apache.. нужно закрыть, чтобы закончить его...
есть идеи??
Спасибо