zlib ?
6 отговора
117 прегледа
zlib ?
Здравейте.
Дадох си едно домашно и си сложих таралеж в гащите.
Та задачата е - има голям текстов файл, който да се архивира като zip и след това да се разархивира. И давата файла не могат да се заредят целите в паметта.
Четох дебели книги, но всички примери искат всичко в паметта. Пробвах на парчета, но не успях.
Знае ли някой място, откъдето да взема малко акъл по този въррос.
Благодаря предварително.
И най-ярките личности си плащат тока.
Дадох си едно домашно и си сложих таралеж в гащите.
Та задачата е - има голям текстов файл, който да се архивира като zip и след това да се разархивира. И давата файла не могат да се заредят целите в паметта.
Четох дебели книги, но всички примери искат всичко в паметта. Пробвах на парчета, но не успях.
Знае ли някой място, откъдето да взема малко акъл по този въррос.
Благодаря предварително.
И най-ярките личности си плащат тока.
Re: zlib ?
каква грешка ти дава ? да не е таймаут?
-----------------------
гърбавия, ковчег ще го изправи
-----------------------
гърбавия, ковчег ще го изправи
Re: zlib ?
gzuncompress - data error.
gzinflate - buffer error.
Оставам с впечатление, че ако не е компресирано всичко наведнаж, не може да се разархивира.
Най голям успех имах с gzwrite, но го познава са мо readgzfile, което пак вдига всичко разархивирано в паметта.
И понеже не съм много добре с архивите ми трябва от някъде да се ограмотя.
И най-ярките личности си плащат тока.
gzinflate - buffer error.
Оставам с впечатление, че ако не е компресирано всичко наведнаж, не може да се разархивира.
Най голям успех имах с gzwrite, но го познава са мо readgzfile, което пак вдига всичко разархивирано в паметта.
И понеже не съм много добре с архивите ми трябва от някъде да се ограмотя.
И най-ярките личности си плащат тока.
Re: zlib ?
Има един такъв пиниз, че при архивирането основна роля играе статистическата информация, която може да се събере. Коя е най-често срещаната буква, коя е тази след нея и т.н. Обаче мисля, че в случая със zlib нямаш проблеми да го караш и на порции...
Everything louder than everything else...
Everything louder than everything else...
Re: zlib ?
За пробата направих това :
$file = "./very_long_file.txt";
$gzfile = "./very_long_file.txt.gz";
$fp = fopen($file, "r");
echo $file."OPened\n";
$zp = gzopen($gzfile, "w9");
echo $gzfile."OPened\n";
while (!FEOF($fp)){
$data = fread ($fp, 1048576);
echo ".";
gzwrite($zp, $data);
}
gzclose($zp);
fclose($fp);
Файла ми беше 70 Мб и мина без проблем. Може да го пробвам и с по-голям но ще видим :-))))))
Имай предвид, че ако го изпълняваш през браузър задължително си пускай някакъв аутпут за да не ти прави retry-ове, че ще скапе хостинга :-))))
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: zlib ?
Подобна проба правих и аз.
Но при разархивирането gzread чете целият архив и го връща в array. В книгата пише, че мога да задавам дължина на прочетените данни, но при мен не обръщаше внимание на това.
Моятя проба беше с 240k текст. При разархивирането исках да ми чете по 1к, но прочете всичко наведнаж. Иначе тази схема ми е много удобна.
В твоят пример 70Mb трябва да се заредят в паметта, а PHP има доста по-малък лимит за скрипта (PHP4.06 - 8Мb).
Благодаря. Ще пробвам с нещо по-голямо. Може би ще стане.
И най-ярките личности си плащат тока.
Но при разархивирането gzread чете целият архив и го връща в array. В книгата пише, че мога да задавам дължина на прочетените данни, но при мен не обръщаше внимание на това.
Моятя проба беше с 240k текст. При разархивирането исках да ми чете по 1к, но прочете всичко наведнаж. Иначе тази схема ми е много удобна.
В твоят пример 70Mb трябва да се заредят в паметта, а PHP има доста по-малък лимит за скрипта (PHP4.06 - 8Мb).
Благодаря. Ще пробвам с нещо по-голямо. Може би ще стане.
И най-ярките личности си плащат тока.
Re: zlib ?
На порции не ще. Пробвах с gzcompress на части и след това ги залепвах една за друга. При gzuncompress дава data error. Явно така му се "разместват битовете" и алгоритъма на разархивирането се побърква.
Благодаря. В краен случай ще го направя като zip с много файлове, всеки от които е достатъчно малък и няма да задръсти паметта.
И най-ярките личности си плащат тока.
Благодаря. В краен случай ще го направя като zip с много файлове, всеки от които е достатъчно малък и няма да задръсти паметта.
И най-ярките личности си плащат тока.