Maison >développement back-end >tutoriel php >Explication détaillée de la façon dont PHP utilise l'extension zlib pour implémenter la sortie compressée GZIP
Cet article présente principalement la méthode PHP utilisant l'extension zlib pour obtenir une sortie de compression GZIP. Il analyse en détail les compétences opérationnelles liées à la configuration PHP gzip et à la sortie de compression sous forme d'exemples. Les amis dans le besoin peuvent se référer à cet article. 🎜>
L'exemple décrit comment PHP utilise l'extension zlib pour implémenter la sortie compressée GZIP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants : Généralement, lorsque nous avons une grande quantité de données à transmettre et que nous espérons réduire la pression de la bande passante sur le serveur, nous adopterons une méthode pour compresser le transmission de fichiers. L'utilisation de zlib en PHP peut également implémenter la sortie compressée gzip, examinons un résumé des différentes méthodes de sortie compressée GZIP GZIP (GNU-ZIP) est une technologie de compression. Après la compression GZIP, la taille de la page peut être réduite à 30 %, voire plus petite, que la taille d'origine. De cette façon, les utilisateurs se sentiront rafraîchis et heureux lors de leur navigation !Préparation
1. Vous ne trouvez pas le fichier php_zlib.dll ? La compression Zlib est intégrée à PHP depuis php4.3, donc au moins dans l'environnement Windows, il n'est pas nécessaire d'installer zlib. 2. Installez et construisez l'environnement d'exploitation php Comme il ne suffit pas d'activer la configuration gzip via le fichier de configuration php.ini pour obtenir une sortie de compression php gzip, cela nécessite la prise en charge d'Apache. , il est donc recommandé d'installer et de créer l'environnement d'exploitation php + apache + mysql.Étapes de configuration de php gzip
1 Ouvrez le fichier de configuration php.ini et recherchezzlib.output_compression = Off. , Remplacez
zlib.output_compression = Off ;zlib.output_compression_level = -1par
zlib.output_compression = On zlib.output_compression_level = 6
Exemple 1
PHP utilise l'extension zlib pour implémenter la sortie de compression GZIP de la pageCodefunction ob_gzip($content) // $content 就是要压缩的页面内容 { if(!headers_sent() && extension_loaded("zlib") && strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))//判断页面头部信息是否输出,PHP中zlib扩 展是否已经加载,浏览器是否支持GZIP技术 { $content = gzencode($content." n//此页已压缩",9); //为准备压缩的内容贴上"//此页已压缩"的注释标签,然后用zlib提供的gzencode()函数执行级别为9的压缩,这个参数值范围是0-9,0 表示无压缩,9表示最大压缩,当然压缩程度越高越费CPU。 //用header()函数给浏览器发送一些头部信息,告诉浏览器这个页面已经用GZIP压缩过了! header("Content-Encoding: gzip"); header("Vary: Accept-Encoding"); header("Content-Length: ".strlen($content)); } return $content; //返回压缩的内容Après la fonction est écrit , appelez-le simplement avec ob_start, donc l'original
devient ob_start()
Copiez le code Le code est le suivant :
ob_start(' ob_gzip'); //Ajoutez un paramètre à ob_start(), et le nom du paramètre est le nom de la fonction à l'instant. De cette façon, lorsque le contenu entre dans le tampon, PHP appellera la fonction ob_gzip pour le compresser. Enfin terminer le tamponCopier le code Le code est le suivant :
ob_end_flush( //); Zone tampon de fin, contenu de sortie. Bien entendu, vous n'avez pas besoin de cette fonction, car le contenu du tampon sera automatiquement affiché à la fin de l'exécution du programme. Le dernier exemple complet<?php //调用一个函数名为ob_gzip的内容进行压缩 ob_start('ob_gzip'); //输出内容 ob_end_flush(); //这是ob_gzip函数 function ob_gzip($content) { if(!headers_sent()&&extension_loaded("zlib") &&strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) { $content = gzencode($content." n//此页已压缩",9); header("Content-Encoding: gzip"); header("Vary: Accept-Encoding"); header("Content-Length: ".strlen($content)); } return $content; } ?>
Exemple 2
zlib compresse et décompresse swf Code du fichier Exemple de fichier ://没有加入判断swf文件是否已经压缩,入需要可以根据文件的第一个字节是'F'或者'C'来判断 压缩swf文件: //-------------------------------------------------------------------------------------------------- //文件名 $filename = "test.swf"; //打开文件 $rs = fopen($filename,"r"); //读取文件的数据 $str = fread($rs,filesize($filename)); //设置swf头文件 $head = substr($str,1,8); $head = "C".$head; //获取swf文件内容 $body = substr($str,8); //压缩文件内容,使用最高压缩级别9 $body = gzcompress($body, 9); //合并文件头和内容 $str = $head.$body; //关闭读取的文件流 fclose($rs); //创建一个新的文件 $ws = fopen("create.swf","w"); //写文件 fwrite($ws,$str); //关闭文件留 fclose($ws); //---------------------------------------------------------------------------------------------------- ?>Décompresser le fichier swf :
//---------------------------------------------------------------------------------------------------- //文件名 $filename = "test.swf"; //打开文件 $rs = fopen($filename,"r"); //读取文件的数据 $str = fread($rs,filesize($filename)); //设置swf头文件 $head = substr($str,1,8); $head = "F".$head; //获取swf文件内容 $body = substr($str,8); //解压缩文件内容 $body = gzuncompress($body); //合并文件头和内容 $str = $head.$body; //关闭读取的文件流 fclose($rs); //创建一个新的文件 $ws = fopen("create.swf","w"); //写文件 fwrite($ws,$str); //关闭文件留 fclose($ws); //---------------------------------------------------------------------------------------------------- ?>
Exemple 3
Activer la sortie compressée php zlib (gzip)Points de connaissance de la configuration php gzip :
1. Par défaut, PHP n'active pas la sortie de compression zlib sur l'ensemble du site, mais utilise la fonction sur les pages qui nécessitent une sortie compressée. Vous ne pouvez choisir que l'une des deux, sinon une erreur sera signalée. . ob_gzhandler
zlib.output_compressionLa valeur par défaut est Off, vous pouvez la définir sur On, ou sur la taille du tampon de sortie (la valeur par défaut est 4k)
3,zlib.output_compression_level représente le taux de compression. La valeur du taux de compression recommandée par défaut est de 6. La plage facultative est de 1 à 9. -1 représente la désactivation de la compression php zlib (gzip)
2. Enregistrez le php. .ini et redémarrez le serveur Apache 3. Ouvrez le fichier de configuration Apache httpd.conf, configurez et chargezdeflate_module
Cette étape est l'étape la plus critique pour activer la configuration de la sortie de la compression php gzip. De nombreux internautes diront que même si j'ai activé la configuration php gzip dans le fichier de configuration php.ini, je ne réalise toujours pas la compression php gzip. C'est parce qu'Apache n'est pas autorisé à charger <.>deflate_module. La méthode est la suivante, remplacez
#LoadModule deflate_module modules/mod_deflate.so
Supprimez le signe # au début et redémarrez Apache.
Articles qui pourraient vous intéresser :
Explication détaillée de la façon dont PHP implémente le cache mémoire distribué pour configurer la synchronisation des sessions de cluster WebUn exemple d'explication de la fonction de découpe et de fusion de fichiers volumineux implémentée par PHPUn exemple d'explication de l'algorithme de regroupement de mots simple implémenté par PHPCe 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!