- gt оверквотинг удален Бессмысленный скрипт Веб сервер умеет отдавать статичны, ыы (?), 12:05 , 12-Дек-18 (1)
>[оверквотинг удален] > open(my $F, '<', "/Folder/logs/error.log") or die $!; > binmode($F); > { > local $/; > my $Result = <$F>; > } > close($F); > print "Content-type: application/txt; charset=UTF-8\n"; > print "Content-Disposition: attachment; filename="error.log\n\n"; > print $Result; Бессмысленный скрипт. Веб сервер умеет отдавать статичный контент сам. для этого скрипт не нужен. > Иногда лог просто гигантский и его необходимо зазиповать перед выдачей. Веб сервер как правило имеет соответствующую опцию по сжатию отдаваемого налету. сжатие веб сервером при этом и распаковка браузером происходят прозрачно для пользователя... > 1. Как сделать это красиво "в воздухе", без пересохранения файла при зиповании? организуйте конвеер через шелл-скрипт. примеров в инете как грязи. > 2. Как зазиповать несколько файлов, тем же способом, т.е. манипулируя только лишь > переменными? используйте в вышеупомянутом конвеере маску. > Заранее спасибо!
- Статичный для примера, в реальности лог дёргается по сетевому пути и подсовывани, Афоня (?), 12:24 , 12-Дек-18 (3)
- Ага, указаны В конце файла ZIP - самый неудобный формат для больших потоков И, ACCA (ok), 09:07 , 13-Дек-18 (6)
- у вас там какое-то корпоративное табу на монтирование сетевых ресурсов , Pahanivo (ok), 22:42 , 13-Дек-18 (8)
- Вам для начала надо ознакомится с матчастью А по наитию вы так и продолжите , ыы (?), 08:41 , 16-Дек-18 (10)
- gt оверквотинг удален 1 Не использавать binmode для текстовых файлов 2 Читат, Pahanivo (ok), 12:10 , 12-Дек-18 (2)
>[оверквотинг удален] > } > close($F); > print "Content-type: application/txt; charset=UTF-8\n"; > print "Content-Disposition: attachment; filename="error.log\n\n"; > print $Result; > Иногда лог просто гигантский и его необходимо зазиповать перед выдачей. > 1. Как сделать это красиво "в воздухе", без пересохранения файла при зиповании? > 2. Как зазиповать несколько файлов, тем же способом, т.е. манипулируя только лишь > переменными? > Заранее спасибо!1) Не использавать binmode для текстовых файлов. 2) Читать файл readline вместо my $Result = <$F>; 3) почемубы вместо всего это идиотизма просто не отдавать файл целиком по ссылке, вывалив каталог логов в апаче с включенным индексированием, ибо он целиком отдается и прогонять его целиком через скрипт маразм.
- http yaforyou ru q perl 20create 20zip 20archive 20on 20the 20flyпо первой же, михалыч (ok), 12:49 , 12-Дек-18 (4)
http://yaforyou.ru/?q=perl%20create%20zip%20a...по первой же ссылке https://www.perlmonks.org/?node_id=929668 use IO::Compress::Zip qw(:all);my @files = ('error.log', 'access.log', 'ssl_request.log'); my $path = "/var/log/apache22"; print "Content-Type:application/zip\n"; print "Content-Disposition: attachment; filename=\"filename.zip\"\n\n"; my $z; foreach my $file (@files) { if ($z) { $z->newStream(Name => $file, Method => ZIP_CM_STORE); } else { $z = new IO::Compress::Zip "-", Name => $file, Method => ZIP_CM_STORE; } open(FILE, "<", "$path/$file"); binmode FILE; my ($buf, $data, $n); while (($n = read FILE,$data, 1024) != 0) { $z->print($data); } close(FILE); } $z->close; exit;
всё уже изобретено до нас и для нас
|