DmbITpo
Новичок
Как работать с большим ZIP архивом PclZip
Здравствуйте. Прошу вашей помощи.
У меня есть файл zip-архив. Он весит около 3-х мегобайт. В нём заархивирован xml-файл. При разархивации (пробовал на компьютере) xml-файл занимает около 200 мегобайт. Т.е. очень много.
Так вот мне надо этот архив разархивировать на сервере.
Я пробовал пару вариантов.
Вариант 1)
Но этот вариант не подходит, потому что содержимое 200 метрового xml-файла заносится в переменную $buf. На это серверу не хватает памяти.
вариант 2)
Этот подход мне нравиться больше. Но в этом варианте не выдаётся никакая ошибка,а просто файл не обрабатывается, насколько я понимаю.
И в связи с этим у меня вопрос. Может в PclZip стоит какой-то ограничитель на размер файла? и есть возможность снять это ограничение?
Вариант 3)
Так же самая проблема. просто ничего не выполняется....
А если нет, то как можно разархивировать такой большой файл?
Буду благодарен за любые ответы по теме.
Здравствуйте. Прошу вашей помощи.
У меня есть файл zip-архив. Он весит около 3-х мегобайт. В нём заархивирован xml-файл. При разархивации (пробовал на компьютере) xml-файл занимает около 200 мегобайт. Т.е. очень много.
Так вот мне надо этот архив разархивировать на сервере.
Я пробовал пару вариантов.
Вариант 1)
PHP:
$zip = zip_open($file);
if ($zip)
{
while ($zip_entry = zip_read($zip))
{
$fp = fopen("unzip/".zip_entry_name($zip_entry), "w");
if (zip_entry_open($zip, $zip_entry, "r"))
{
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
fwrite($fp,"$buf");
zip_entry_close($zip_entry);
fclose($fp);
}
}
zip_close($zip);
вариант 2)
PHP:
$zip = new PclZip($file);
$list = $zip->extract("unzip/");
if ($list == 0)
echo "ERROR : ".$zip->errorInfo(true);
И в связи с этим у меня вопрос. Может в PclZip стоит какой-то ограничитель на размер файла? и есть возможность снять это ограничение?
Вариант 3)
PHP:
$out=exec("unzip ".$unzip_dir.$file);
А если нет, то как можно разархивировать такой большой файл?
Буду благодарен за любые ответы по теме.


