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

Reply via email to