<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Прочитать файл в переменную, зазиповать и выдать в браузер</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html</link>
    <description>Всем привет&lt;br&gt;&lt;br&gt;Apache, на нём Perl-скрипт, который читает файл и выдаёт его в браузер:&lt;br&gt;&lt;br&gt;open(my $F, &apos;&amp;lt;&apos;, &quot;/Folder/logs/error.log&quot;) or die $!;&lt;br&gt;binmode($F);&lt;br&gt;&#123;&lt;br&gt;  local $/;&lt;br&gt;  my $Result = &amp;lt;$F&amp;gt;;&lt;br&gt;&#125;&lt;br&gt;close($F);&lt;br&gt;&lt;br&gt;print &quot;Content-type: application/txt; charset=UTF-8&#092;n&quot;;&lt;br&gt;print &quot;Content-Disposition: attachment; filename=&quot;error.log&#092;n&#092;n&quot;;&lt;br&gt;print $Result;&lt;br&gt;&lt;br&gt;&lt;br&gt;Иногда лог просто гигантский и его необходимо зазиповать перед выдачей.&lt;br&gt;&lt;br&gt;1. Как сделать это красиво &quot;в воздухе&quot;, без пересохранения файла при зиповании?&lt;br&gt;2. Как зазиповать несколько файлов, тем же способом, т.е. манипулируя только лишь переменными?&lt;br&gt;&lt;br&gt;&lt;br&gt;Заранее спасибо!&lt;br&gt;</description>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (ыы)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#10</link>
    <pubDate>Sun, 16 Dec 2018 05:41:29 GMT</pubDate>
    <description>&amp;gt; Статичный для примера, в реальности лог дёргается по сетевому пути и подсовывание &lt;br&gt;&amp;gt; &quot;прямой&quot; (если так можно выразиться) ссылки невозможно для пользователя.&lt;br&gt;&lt;br&gt;Вам для начала надо ознакомится с матчастью. А &quot;по наитию&quot; вы так и  продолжите лепить горбатого.&lt;br&gt;Статичный это не то что вы представляете. Статичный контент - это файл на диске или где-то еще, существующий постоянно, в отличие от динамического контента - генерируемого &quot;на лету&quot; скриптами.  Динамический контент нигде не существует постоянно, он генерируется, а статичный- существует постоянно, его можно в любой момент прочитать как файл. Тоесть елси до начала вызова скрипта, файл который вы собрались отдавать пользователю уже где-то существовал - то это статичный контент, а если он нигде не существовал- то динамический.&lt;br&gt;Судя по вашему скрипту- вы тупо перекачиваете статичный контент, нагружая сервер совершенно бессмысленнйо работой ради работы. Ну или потому что архитектурное решение использованное вами- продиктовано незнанием и профневежеством.&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (Pahanivo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#9</link>
    <pubDate>Thu, 13 Dec 2018 19:43:09 GMT</pubDate>
    <description>&amp;gt; А ещё включить gzip на лету в том же апаче. Вообще ничего &lt;br&gt;&amp;gt; писать не нужно.&lt;br&gt;&lt;br&gt;Афтар на своей волне походу - через опу но по своему.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (Pahanivo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#8</link>
    <pubDate>Thu, 13 Dec 2018 19:42:26 GMT</pubDate>
    <description>&amp;gt; Статичный для примера, в реальности лог дёргается по сетевому пути и подсовывание &lt;br&gt;&amp;gt; &quot;прямой&quot; (если так можно выразиться) ссылки невозможно для пользователя.&lt;br&gt;&lt;br&gt;у вас там какое-то корпоративное табу на монтирование сетевых ресурсов?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (ACCA)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#7</link>
    <pubDate>Thu, 13 Dec 2018 06:09:05 GMT</pubDate>
    <description>&amp;gt; 3) почемубы вместо всего это идиотизма просто не отдавать файл целиком по &lt;br&gt;&amp;gt; ссылке, вывалив каталог логов в апаче с включенным индексированием, ибо он &lt;br&gt;&amp;gt; целиком отдается и прогонять его целиком через скрипт маразм.&lt;br&gt;&lt;br&gt;А ещё включить gzip на лету в том же апаче. Вообще ничего писать не нужно.&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (ACCA)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#6</link>
    <pubDate>Thu, 13 Dec 2018 06:07:46 GMT</pubDate>
    <description>&amp;gt; Не понял, как сделать зип из нескольких файлов по конвееру? Там же &lt;br&gt;&amp;gt; в зипе имена как-то должны быть указаны &lt;br&gt;&lt;br&gt;Ага, указаны. В конце файла.&lt;br&gt;ZIP - самый неудобный формат для &#091;больших&#093; потоков.&lt;br&gt;&lt;br&gt;Используй gzip, жми файлы по-одиночке. Если уж совсем неймётся - смотри на tar.gz.&lt;br&gt;&lt;br&gt;И будет тебе счастье.&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (Афоня)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#5</link>
    <pubDate>Wed, 12 Dec 2018 13:54:18 GMT</pubDate>
    <description>Спасибо!&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (михалыч)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#4</link>
    <pubDate>Wed, 12 Dec 2018 09:49:50 GMT</pubDate>
    <description>http://yaforyou.ru/?q=perl&#037;20create&#037;20zip&#037;20archive&#037;20on&#037;20the&#037;20fly&lt;br&gt;&lt;br&gt;по первой же ссылке&lt;br&gt;https://www.perlmonks.org/?node_id=929668&lt;br&gt;&lt;br&gt;&#091;code&#093;use IO::Compress::Zip qw(:all);&lt;br&gt;&lt;br&gt;my &#064;files = (&apos;error.log&apos;, &apos;access.log&apos;, &apos;ssl_request.log&apos;);&lt;br&gt;&lt;br&gt;my $path = &quot;/var/log/apache22&quot;;&lt;br&gt;&lt;br&gt;print &quot;Content-Type:application/zip&#092;n&quot;;&lt;br&gt;print &quot;Content-Disposition: attachment; filename=&#092;&quot;filename.zip&#092;&quot;&#092;n&#092;n&quot;;&lt;br&gt;&lt;br&gt;my $z;&lt;br&gt;&lt;br&gt;foreach my $file (&#064;files) &#123;&lt;br&gt;    if ($z) &#123;&lt;br&gt;        $z-&amp;gt;newStream(Name =&amp;gt; $file, Method =&amp;gt; ZIP_CM_STORE);&lt;br&gt;    &#125; else &#123;&lt;br&gt;        $z = new IO::Compress::Zip &quot;-&quot;, Name =&amp;gt; $file, Method =&amp;gt; ZIP_CM_STORE;&lt;br&gt;    &#125;&lt;br&gt;&lt;br&gt;    open(FILE, &quot;&amp;lt;&quot;, &quot;$path/$file&quot;);&lt;br&gt;    binmode FILE;&lt;br&gt;&lt;br&gt;    my ($buf, $data, $n);&lt;br&gt;&lt;br&gt;    while (($n = read FILE,$data, 1024) != 0) &#123;&lt;br&gt;        $z-&amp;gt;print($data);&lt;br&gt;    &#125;&lt;br&gt;&lt;br&gt;    close(FILE);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;$z-&amp;gt;close;&lt;br&gt;&lt;br&gt;exit;&#091;/code&#093;&lt;br&gt;&lt;br&gt;всё уже изобретено до нас и для нас&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (Афоня)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#3</link>
    <pubDate>Wed, 12 Dec 2018 09:24:15 GMT</pubDate>
    <description>Статичный для примера, в реальности лог дёргается по сетевому пути и подсовывание &quot;прямой&quot; (если так можно выразиться) ссылки невозможно для пользователя.&lt;br&gt;&lt;br&gt;Не понял, как сделать зип из нескольких файлов по конвееру? Там же в зипе имена как-то должны быть указаны&lt;br&gt;</description>
</item>

<item>
    <title>Прочитать файл в переменную, зазиповать и выдать в браузер (Pahanivo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10250.html#2</link>
    <pubDate>Wed, 12 Dec 2018 09:10:02 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; close($F); &lt;br&gt;&amp;gt; print &quot;Content-type: application/txt; charset=UTF-8&#092;n&quot;; &lt;br&gt;&amp;gt; print &quot;Content-Disposition: attachment; filename=&quot;error.log&#092;n&#092;n&quot;; &lt;br&gt;&amp;gt; print $Result; &lt;br&gt;&amp;gt; Иногда лог просто гигантский и его необходимо зазиповать перед выдачей.&lt;br&gt;&amp;gt; 1. Как сделать это красиво &quot;в воздухе&quot;, без пересохранения файла при зиповании? &lt;br&gt;&amp;gt; 2. Как зазиповать несколько файлов, тем же способом, т.е. манипулируя только лишь &lt;br&gt;&amp;gt; переменными?&lt;br&gt;&amp;gt; Заранее спасибо!&lt;br&gt;&lt;br&gt;1) Не использавать binmode для текстовых файлов.&lt;br&gt;2) Читать файл readline  вместо my $Result = &amp;lt;$F&amp;gt;; &lt;br&gt;3) почемубы вместо всего это идиотизма просто не отдавать файл целиком по ссылке, вывалив каталог логов в апаче с включенным индексированием, ибо он целиком отдается и прогонять его целиком через скрипт маразм.&lt;br&gt;</description>
</item>

</channel>
</rss>
