Maison  >  Article  >  développement back-end  >  PHP utilise l'extension zlib pour implémenter l'analyse des étapes de sortie de compression GZIP

PHP utilise l'extension zlib pour implémenter l'analyse des étapes de sortie de compression GZIP

php中世界最好的语言
php中世界最好的语言original
2018-05-17 10:18:361315parcourir

Cette fois, je vais vous apporter une analyse des étapes d'utilisation de l'extension zlib pour implémenter la sortie de compression GZIP en PHP. Quelles sont les précautions pour utiliser l'extension zlib en PHP pour implémenter la sortie de compression GZIP. Voici les cas pratiques, jetons un oeil.

Dans des circonstances normales, lorsque nous avons une grande quantité de données à transmettre et que nous souhaitons réduire la pression de la bande passante sur le serveur, nous adopterons une méthode pour compresser la transmission de fichiers. L'utilisation de zlib en PHP peut également réaliser une compression gzip. sortie. Regardons la sortie de compression GZIP. Résumé des différentes méthodes.

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 l'environnement Windows n'a pas besoin d'installer zlib.

2. Installez et construisez l'environnement d'exploitation php

Comme il ne suffit pas d'activer la sortie de compression php gzip via le fichier de configuration php.ini , cela nécessite le support. d'Apache, il est donc recommandé d'installer et de créer un environnement d'exploitation php+apache+mysql.

Étapes de configuration de php gzip

1 Ouvrez le fichier de configuration php.ini et recherchez zlib.output_compression = Off. , Modifiez

zlib.output_compression = Off
;zlib.output_compression_level = -1

en

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 page

Une fois la fonction code

function 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; //返回压缩的内容

écrite, utilisez ob_start pour l'appeler, ainsi l'original ob_start() devient

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 tampon

Copier le code Le code est le suivant :

ob_end_flush( //Fin du tampon, 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(&#39;ob_gzip&#39;);
//输出内容
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

Code de compression et de décompression Zlib pour les fichiers swf

Exemple de fichiers :

//没有加入判断swf文件是否已经压缩,入需要可以根据文件的第一个字节是&#39;F&#39;或者&#39;C&#39;来判断
压缩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écompressez 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

Activez la sortie compressée php zlib (gzip)

Points de connaissance de la configuration de php gzip :

1 Par défaut, php n'active pas la sortie de compression de l'ensemble du site zlib, mais utilise <a href pour les pages qui n une sortie compress target="_blank">ob_gzhandler<code><a href="http://www.php.cn/wiki/584.html" target="_blank">ob_gzhandler</a> implémentation de la fonction, vous ne pouvez choisir qu'un des deux, sinon une erreur sera signalé.

2, 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. Le taux de compression recommandé 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 chargez deflate_module

Cette étape est l'étape la plus critique pour activer la configuration de sortie de 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
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur. le site php chinois !

Lecture recommandée :

Explication détaillée des étapes pour couper et fusionner des fichiers volumineux avec PHP

Explication détaillée de la étapes pour le fonctionnement de la base de données PHP+mongoDB

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