Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Unterschiede zwischen den PHP-Komprimierungsfunktionen gzencode, gzdeflate und gzcompress

Detaillierte Erläuterung der Unterschiede zwischen den PHP-Komprimierungsfunktionen gzencode, gzdeflate und gzcompress

*文
*文Original
2017-12-28 15:26:381774Durchsuche

In diesem Artikel wird hauptsächlich die Komprimierungsfunktionsimplementierung von PHP vorgestellt: Die Unterschiede zwischen gzencode, gzdeflate und gzcompress. Freunde in Not können sich darauf beziehen. Ich hoffe, es hilft allen.

•gzencode verwendet standardmäßig die ZLIB_ENCODING_GZIP-Kodierung und das gzip-Komprimierungsformat. Es verwendet tatsächlich den defalte-Algorithmus zum Komprimieren von Daten und fügt dann Dateiheader und Adler32-Überprüfung hinzu.
•gzdeflate verwendet standardmäßig die ZLIB_ENCODING_RAW-Kodierung und verwendet deflate Der Komprimierungsalgorithmus verwendet tatsächlich zuerst die LZ77-Komprimierung und dann die Huffman-Codierung zum Komprimieren Header und CRC-Korrektur werden hinzugefügt.

Der Vergleich dieser drei Funktionen ist im Wesentlichen ein Vergleich von drei Komprimierungsmethoden: Deflate, Zlib und Gzip.

Aus der Dimension der Leistung: Deflate ist besser als gzip und besser als zlib
Aus der Dimension der Standardkomprimierungsrate der Textdatei nach der Komprimierung: Deflate ist besser als zlib und besser als gzip

Unter anderem Diese drei Algorithmen Die Autoren von gzip und zlib sind Jean-Loup Gailly und Mark Adler.

Diese beiden Algorithmen sowie das Grafikformat PNG verwenden den Deflate-Algorithmus.
Der Deflate-Algorithmus ist ein verlustfreier Datenkomprimierungsalgorithmus, der sowohl den LZ77-Algorithmus als auch die Huffman-Codierung verwendet.
Es wurde ursprünglich von Phil Katz für Version 2 seines PKZIP-Archivierungstools und später in der RFC 1951-Spezifikation definiert.

Der Implementierungsprozess der Komprimierung und Dekomprimierung des Deflate-Algorithmus finden Sie in der Komprimierungsbibliothek zlib.

Die Komprimierungsimplementierung von PHP basiert auf zlib, einer Funktionsbibliothek, die die Komprimierungsmethoden deflate, zlib und gzip bereitstellt.
Die oben genannten drei Funktionen, die wir verwenden: Wenn die Codierung in den Parametern auf dieselbe geändert wird und die Komprimierungsrate auf dieselbe eingestellt ist, wird letztendlich dieselbe Funktion aufgerufen, und der Effekt und die Leistung sind dieselben.

Die zlib-Implementierung von PHP existiert im Verzeichnis ext/zlib als Erweiterung. Die Komprimierungsfunktion wird durch die drei Funktionen deflateInit2() + deflate() + deflateEnd() abgeschlossen, und die Dekomprimierungsfunktion wird durch die drei Funktionen inflateInit2() + inflate() + inflateEnd() abgeschlossen. Die Komprimierung wird letztendlich über die Funktion php_zlib_encode aufgerufen. Zusätzlich zur Eingabezeichenfolge, der Komprimierungsrate und der Ergebnisausgabe sind die verschiedenen Eingabeparameter des Funktionsaufrufs deren Codierung. Der vierte Parameter von deflateInit2 gibt die Codierung an.

PHP definiert drei Konstanten:


#define PHP_ZLIB_ENCODING_RAW          -0xf      //deflate -15
#define PHP_ZLIB_ENCODING_GZIP          0x1f      //gzip 15 + 16
#define PHP_ZLIB_ENCODING_DEFLATE     0x0f      // zlib 15

Drei Funktionen können während des Aufrufvorgangs direkt verwendet werden Geben Sie die Codierung an, um andere Algorithmen zu verwenden:


zlib:   ZLIB_ENCODING_DEFLATE 
gzip: ZLIB_ENCODING_GZIP
deflate: ZLIB_ENCODING_RAW
Diese drei Funktionen sind einfache Aufrufmethoden der drei Algorithmen, dargestellt mit besseren Namen. Die drei Funktionen können den gleichen Effekt erzielen, indem sie dieselbe Codierung angeben, und PHP stellt außerdem die Funktion zlib_encode als universelle Komprimierungsfunktion bereit.

Verwandte Empfehlungen:

Mehrere Methoden zur PHP-Komprimierung von Zeichenfolgen

PHP-Bildkomprimierungsmethode

PHP-Implementierungscode zum Komprimieren mehrerer CSS-Dateien

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Unterschiede zwischen den PHP-Komprimierungsfunktionen gzencode, gzdeflate und gzcompress. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn