Maison  >  Article  >  développement back-end  >  Explication détaillée des différences entre les fonctions de compression PHP gzencode, gzdeflate et gzcompress

Explication détaillée des différences entre les fonctions de compression PHP gzencode, gzdeflate et gzcompress

*文
*文original
2017-12-28 15:26:381778parcourir

Cet article présente principalement l'implémentation de la fonction de compression PHP : les différences entre gzencode, gzdeflate et gzcompress Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.

•gzencode utilise le codage ZLIB_ENCODING_GZIP par défaut et utilise le format de compression gzip. Il utilise en fait l'algorithme defalte pour compresser les données, puis ajoute les en-têtes de fichiers et la vérification adler32
•gzdeflate utilise le codage ZLIB_ENCODING_RAW par défaut et utilise deflate. data L'algorithme de compression utilise en fait d'abord la compression LZ77, puis utilise le codage Huffman pour compresser
•gzcompress ; le codage par défaut est ZLIB_ENCODING_DEFLATE, et le format de compression zlib est en fait utilisé pour compresser les données, puis le zlib. l'en-tête et la correction CRC sont ajoutés. Vérifier

La comparaison de ces trois fonctions est essentiellement une comparaison de trois méthodes de compression : deflate, zlib et gzip.
Du point de vue des performances : deflate est meilleur que gzip et meilleur que zlib
Du point de vue du taux de compression par défaut du fichier texte après compression : deflate est meilleur que zlib et meilleur que gzip

Parmi ces trois algorithmes Les auteurs de gzip et zlib sont Jean-Loup Gailly et Mark Adler.
Les algorithmes de compression utilisés par ces deux algorithmes et le format graphique png sont tous des algorithmes de dégonflage.
L'algorithme de dégonflage est un algorithme de compression de données sans perte qui utilise à la fois l'algorithme LZ77 et le codage Huffman.
Il a été initialement défini par Phil Katz pour la version 2 de son outil d'archivage PKZIP et plus tard dans la spécification RFC 1951.

Le processus d'implémentation de compression et de décompression de l'algorithme deflate peut être trouvé dans la bibliothèque de compression zlib.
L'implémentation de la compression PHP repose sur zlib, qui est une bibliothèque de fonctions qui fournit les méthodes de compression deflate, zlib et gzip.
Les trois fonctions ci-dessus que nous utilisons, si l'encodage dans les paramètres est modifié et que le taux de compression est défini sur le même, alors la même fonction est finalement appelée, et l'effet et les performances sont les mêmes.

L'implémentation zlib de PHP existe dans le répertoire ext/zlib en tant qu'extension. La fonction de compression est complétée par les trois fonctions deflateInit2() + deflate() + deflateEnd(), et la fonction de décompression est complétée par les trois fonctions de inflateInit2() + inflate() + inflateEnd(). La compression est finalement appelée via la fonction php_zlib_encode En plus de la chaîne d'entrée, du taux de compression et du résultat, les différents paramètres d'appel de la fonction d'entrée sont leur encodage. Le quatrième paramètre de deflateInit2 spécifie l'encodage PHP définit trois constantes :


#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

Trois fonctions peuvent être utilisées directement pendant le processus d'appel. spécifiez l'encodage pour utiliser d'autres algorithmes :


zlib:   ZLIB_ENCODING_DEFLATE 
gzip: ZLIB_ENCODING_GZIP
deflate: ZLIB_ENCODING_RAW

Ces trois fonctions sont de simples méthodes d'appel des trois algorithmes, présentées avec de meilleurs noms. Les trois fonctions peuvent obtenir le même effet en spécifiant le même encodage, et PHP fournit également la fonction zlib_encode comme fonction de compression universelle.

Recommandations associées :

Plusieurs méthodes de compression de chaînes PHP

Méthode de compression d'image php

Code d'implémentation php pour compresser plusieurs fichiers CSS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn