Maison  >  Article  >  développement back-end  >  Comparez les fonctions de compression de PHP gzencode, gzdeflate et gzcompress

Comparez les fonctions de compression de PHP gzencode, gzdeflate et gzcompress

巴扎黑
巴扎黑original
2017-08-21 14:15:463700parcourir

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 le deflate. , il utilise en fait d'abord la compression LZ77, puis utilise le codage Huffman pour compresser

gzcompress ; le codage ZLIB_ENCODING_DEFLATE est utilisé par défaut, et le format de compression zlib est en fait utilisé pour compresser les données, puis l'en-tête zlib et la correction CRC sont ajoutés. Vérifiez

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 des fichiers texte après compression : deflate est meilleur que zlib et meilleur que gzip

Les auteurs de gzip et zlib parmi ces trois algorithmes 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 deflate 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. même.

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 : + 16#define PHP_ZLIB_ENCODING_DEFLATE 0x0f // zlib 15

Trois fonctions peuvent spécifier directement l'encodage pour utiliser d'autres algorithmes pendant le processus d'appel :

zlib : ZLIB_ENCODING_DEFLATE gzip : ZLIB_ENCODING_GZIPdeflate : ZLIB_ENCODING_RAW

Ces trois fonctions sont trois algorithmes Méthode d'appel simple, meilleur affichage des 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.

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