Forum Webscript.Ru
Программирование => PHP => Тема начата: Макс от 26 Декабря 2001, 21:25:47
-
Нужно периодически архивировать сравнительно большие бинарные файлы с помошью zlib.
Кто что посоветует? (можно алгоритм) Главный критерий - низкая нагрузка на сервер.
И еще вопрос по zlib.
Можно ли с его помощью сделать архив в который можно было бы поместить 2 и более файла?
И как потом эти файлы разархивировать?
-
Так алгоритм совершенно прозрачен.
$comp_file = gzopen("notepadf.gz","wb9f");
$unc_file = fopen("Notepad.exe","rb");
if(!$unc_file)
{
die(\'Can\\\'t open file\');
}
$fs = filesize("Notepad.exe");
echo$fs.\'
\';
$to_comp = fread($unc_file,$fs);
fclose($unc_file);
gzwrite($comp_file,$to_comp);
gzclose($comp_file);
echo\'Complete\';
Собсно при откытии в gzopen вторым параметром идет степень компресии (от 1 до 9. 9 максимум) и алгоритм (f - фильтрация, h- по Хоффману).
Приведенный пример дал следующие результаты:
Оригинальный файл - 66048byte
Без выбора стратегии (никаких ключей) - 34189
Фильтрация - 36523
Хоффман - 47106
-
Как поместить более одного файла - бог его знает. Он все в один сливает. Может кто и додумается.
-
Voobscheto pod Unix kazhdaya programma svoim zanimaetsya :)
TAR - slivaet kuchu fajlov v odin (sohranyaya datu sozdaniya, prava i dr)
GZ - potom arhiviruet etot odin fajl :)
poluchaem file.tar.gz ili sokraschenno file.tgz
-
Я в общем-то так и думал. А тары в РНР делать никак :(((
И зипы тоже. :( только читать, дя и то начиная с версии 4.1.0.
-
ThE0ReTiC
А тары в РНР делать никак ((
Есть у меня PEAR-вский класс Archive_Tar - вроде как должен архивировать tar-ом. Я с ним не работал, времени в обрез.
Что касается приведенного тобой скрипта, то ИМХО при размерах файлов в 100 - 500 и более Кб это будет немного сервер грузить. Или не так?
-
Будет. Не спорю. Дома машину прилично нагружало. Правда это проблема машины.
А класс посмотреть дай ? :)
-
Правда это проблема машины.
Это еще и мои проблемы, поскольку нужно доказать хостеру что этот скрипт совсем не будет грузить сервер. А он (скрипт) еще должен по crontab-у каждый день паковать файлов 6 - 8.
-
Тхенкс.
Правда я имел ввиду свою машину дома :):)