cvs: phpdoc /en/appendices filters.xml

From: Date: Fri, 16 Apr 2004 00:20:56 +0000
Subject: cvs: phpdoc /en/appendices filters.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969360121@lists.php.net to get a copy of this message
pollita Thu Apr 15 20:20:56 2004 EDT Modified files: /phpdoc/en/appendices filters.xml Log: Document zlib filters http://cvs.php.net/diff.php/phpdoc/en/appendices/filters.xml?r1=1.4&r2=1.5&ty=u Index: phpdoc/en/appendices/filters.xml diff -u phpdoc/en/appendices/filters.xml:1.4 phpdoc/en/appendices/filters.xml:1.5 --- phpdoc/en/appendices/filters.xml:1.4 Thu Apr 15 11:38:49 2004 +++ phpdoc/en/appendices/filters.xml Thu Apr 15 20:20:56 2004 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.4 $ --> +<!-- $Revision: 1.5 $ --> <appendix id="filters"> - <title>List of Built-In Filters</title> + <title>List of Available Filters</title> <para> The following is a list of a few built-in stream filters for use with <function>stream_filter_append</function>. @@ -229,6 +229,132 @@ </example> </section> + <section id="filters.compression"> + <title>Compression Filters</title> + + <simpara> + While the <xref linkend="wrappers.compression"/> provide a way of creating + gzip and bz2 compatable files on the local filesystem, they do not provide a + means for generalized compression over network streams, nor do they provide a + means begin with a non-compressed stream and transition to a compressed one. + For this, a compression filter may be applied to any stream resource at any time. + </simpara> + + <note> + <simpara> + Compression filters do <emphasis>not</emphasis> generate headers and trailers + used by commandline utilites such as <literal>gzip</literal>. They only compress + and decompress the payload portions of compressed data streams. + </simpara> + </note> + + <simpara> + <literal>zlib.deflate</literal> (compression) and + <literal>zlib.inflate</literal> (decompression) are implementations of + the compression methods described in <ulink url="&url.rfc;1951">RFC 1951</ulink>. + The <literal>deflate</literal> filter takes up to three parameters passed as + an associative array. + + <parameter>level</parameter> describes the compression + strength to use (1-9). Higher numbers will generally yield smaller payloads at + the cost of additional processing time. Two special compression levels also exist: + 0 (for no compression at all), and -1 (zlib internal default -- currently 6). + + <parameter>window</parameter> is the base-2 log of the compression loopback window size. + Higher values (up to 15 -- 32768 bytes) yield better compression at a cost of memory, + while lower values (down to 9 -- 512 bytes) yield worse compression in a smaller memory footprint. + Default <parameter>window</parameter> size is currently <constant>15</constant>. + + <parameter>memory</parameter> is a scale indicating how much work memory should be allocated. + Valid values range from 1 (minimal allocation) to 9 (maximum allocation). This memory allocation + affects speed only and does not impact the size of the generated payload. + </simpara> + + <note> + <simpara> + Because compression level is the most commonly used parameter, it may be alternatively + provided as a simple integer value (rather than an array element). + </simpara> + </note> + + <note> + <simpara> + The zlib.* filters are not currently built into the PHP core. To enable these filters + in <literal>PHP 5</literal>, install the <ulink url="&url.pecl.package;zlib_filter">zlib_filter</ulink> + package from <ulink url="&url.pecl;">PECL</ulink>. These filters are <emphasis>not</emphasis> + available for <literal>PHP 4</literal>. + </simpara> + </note> + + <example> + <title> + <literal>zlib.deflate</literal> and + <literal>zlib.inflate</literal> + </title> + <programlisting role="php"> +<![CDATA[ +<?php +$params = array('level' => 6, 'window' => 15, 'memory' => 9); + +$original_text = "This is a test.\nThis is only a test.\nThis is not an important string.\n"; +echo "The original text is " . strlen($original_text) . " characters long.\n"; + +$fp = fopen('test.deflated', 'w'); +stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, $params); +fwrite($fp, $original_text); +fclose($fp); + +echo "The compressed file is " . filesize('test.deflated') . " bytes long.\n"; +echo "The original text was:\n"; +/* Use readfile and zlib.inflate to decompress on the fly */ +readfile('php://filter/zlib.inflate/resource=test.deflated'); + +/* Generates output: + +The original text is 70 characters long. +The compressed file is 56 bytes long. +The original text was: +This is a test. +This is only a test. +This is not an important string. + + */ +?> +]]> + </programlisting> + </example> + + <example> + <title> + <literal>zlib.deflate</literal> simple + </title> + <programlisting role="php"> +<![CDATA[ +<?php +$original_text = "This is a test.\nThis is only a test.\nThis is not an important string.\n"; +echo "The original text is " . strlen($original_text) . " characters long.\n"; + +$fp = fopen('test.deflated', 'w'); +/* Here "6" indicates compression level 6 */ +stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, 6); +fwrite($fp, $original_text); +fclose($fp); + +echo "The compressed file is " . filesize('test.deflated') . " bytes long.\n"; + +/* Generates output: + +The original text is 70 characters long. +The compressed file is 56 bytes long. + + */ +?> +]]> + </programlisting> + </example> + + </section> + </appendix> <!-- Keep this comment at the end of the file

« previous php.doc (#969360121) next »