It may be difficult to understand the differences between "gzcompress", "gzdeflate" and "gzencode". Here are my notes:
gzcompress()
------------
Uses ZLIB_ENCODING_DEFLATE (https://www.php.net/manual/en/zlib.constants.php#constant.zlib-encoding-deflate)
ZLIB compression algorithm as per RFC 1950.
Compatible with pigz. (Not compatible with gzip.)
Has a header (compression details, begins with 0x78) and a footer (Adler32 checksum of uncompressed data in big-endian).
gzdeflate()
------------
Uses ZLIB_ENCODING_RAW (https://www.php.net/manual/en/zlib.constants.php#constant.zlib-encoding-raw)
DEFLATE algorithm as per RFC 1951.
No header and footer. Pure DEFLATE.
gzencode()
------------
Uses ZLIB_ENCODING_GZIP (https://www.php.net/manual/en/zlib.constants.php#constant.zlib-encoding-gzip)
GZIP algorithm as per RFC 1952.
Compatible with gzip.
Header begins with magic number 0x1f8b, then compression method 8 (DEFLATE), no file flags, no timestamp, with operating system ID.
Footer contains CRC32 checksum of uncompressed data and then size of uncompressed data, both in little-endian.gzencode
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
gzencode — Create a gzip compressed string
Description
This function returns a compressed version of the input
data compatible with the output of the
gzip program.
For more information on the GZIP file format, see the document: » GZIP file format specification version 4.3 (RFC 1952).
Parameters
data-
The data to encode.
level-
The level of compression. Can be given as 0 for no compression up to 9 for maximum compression. If not given, the default compression level will be the default compression level of the zlib library.
encoding-
The encoding mode. Can be
FORCE_GZIP(the default) orFORCE_DEFLATE.FORCE_DEFLATEgenerates RFC 1950 compliant output, consisting of a zlib header, the deflated data, and an Adler checksum.
Return Values
The encoded string, or false if an error occurred.
Examples
The resulting data contains the appropriate headers and data structure to make a standard .gz file, e.g.:
Example #1 Creating a gzip file
<?php
$data = file_get_contents("bigfile.txt");
$gzdata = gzencode($data, 9);
file_put_contents("bigfile.txt.gz", $gzdata);
?>See Also
- gzdecode() - Decodes a gzip compressed string
- gzdeflate() - Deflate a string
- gzinflate() - Inflate a deflated string
- gzuncompress() - Uncompress a compressed string
- gzcompress() - Compress a string
- » ZLIB Compressed Data Format Specification (RFC 1950)