PHP 8.4.2 Released!

gzencode

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gzencodeCrea una stringa compressa con gzip

Descrizione

gzencode(string $data, int $level = -1, int $encoding_mode = FORCE_GZIP): string

Questa funzione restituisce una versione compressa di data compatibile con l'output del programma gzip.

Per ulteriori informazioni sul formato dei file GZIP, consultare il documento: » Specifica del formato di file GZIP versione 4.3 (RFC 1952).

Elenco dei parametri

data

I dati da codificare.

level

Il livello di compressione. Può essere dato come 0 per nessuna compressione fino a 9 per la massima compressione. Se non viene fornito, il livello di compressione predefinito adottato sarà quello di default della libreria zlib.

encoding_mode

La modalità di codifica. Può essere FORCE_GZIP (il default) o FORCE_DEFLATE.

Prima di PHP 5.4.0, se si utilizza FORCE_DEFLATE, si ottiene una stringa compressa col DEFLATE standard di zlib (comprendente gli header zlib) dopo un header del file gzip ma senza il checksum crc32 finale.

In PHP 5.4.0 e versioni successive, FORCE_DEFLATE genera un output conforme a RFC 1950, costituito da un header zlib, i dati compressi col DEFLATE e un checksum Adler.

Valori restituiti

La stringa codificata o false se si è verificato un errore.

Esempi

I dati risultanti contengono gli header e la struttura dati appropriati per creare un file .gz standard, ad esempio:

Example #1 Creare un file gzip

<?php
$data
= implode("", file("bigfile.txt"));
$gzdata = gzencode($data, 9);
$fp = fopen("bigfile.txt.gz", "w");
fwrite($fp, $gzdata);
fclose($fp);
?>

Vedere anche:

add a note

User Contributed Notes 2 notes

up
12
Sam Dowling
13 years ago
this is a benchmark test of gzencode (.txt file)
----------------------------------------------
original file size = 3.29 MB (3,459,978 bytes)
compress lvl 1 = 1.09 MB (1,144,006 bytes)
compress lvl 2 = 1.06 MB (1,119,518 bytes)
compress lvl 3 = 1.03 MB (1,085,567 bytes)
compress lvl 4 = 953 KB (976,538 bytes)
compress lvl 5 = 909 KB (931,486 bytes)
compress lvl 6 = 910 KB (932,516 bytes)
compress lvl 7 = 910 KB (932,608 bytes)
compress lvl 8 = 910 KB (932,646 bytes)
compress lvl 9 = 910 KB (932,652 bytes)
----------------------------------------------
up
1
jp dot amarok at email dot cz
2 months ago
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.
To Top