激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP使用zlib擴展實現GZIP壓縮輸出的方法詳解

PHP使用zlib擴展實現GZIP壓縮輸出的方法詳解

2019-10-13 14:27冬蟲吃夏草 PHP教程

這篇文章主要介紹了PHP使用zlib擴展實現GZIP壓縮輸出的方法,結合實例形式詳細分析了php gzip配置及壓縮輸出的相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP使用zlib擴展實現GZIP壓縮輸出的方法。分享給大家供大家參考,具體如下:

一般情況下我們出現大量數據傳輸理希望減少服務器的帶寬壓力,會采取一種方式來壓縮文件傳輸,php中用zlib也可以實現gzip壓縮輸出,下面我們來看GZIP壓縮輸出各種方法總結.

GZIP(GNU-ZIP)是一種壓縮技術。經過GZIP壓縮后頁面大小可以變為原來的30%甚至更小。這樣用戶瀏覽的時候就會感覺很爽很愉快!

準備工作

1、找不到php_zlib.dll文件?

自php4.3開始zlib壓縮就已經內置在php中了,所以至少Windows環境下是不需要安裝zlib的。

2、安裝搭建php運行環境

由于光通過php.ini配置文件開啟gzip配置實現php gzip壓縮輸出是不行的,其需要apache的支持,所以建議安裝搭建php+apache+mysql運行環境。

php gzip配置步驟

一、打開php.ini配置文件,找到zlib.output_compression = Off,將

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

修改為

zlib.output_compression = On
zlib.output_compression_level = 6

實例1

PHP使用zlib擴展實現頁面GZIP壓縮輸出

代碼

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; //返回壓縮的內容

函數寫好后,就用ob_start調用它,于是原來的ob_start()變成

 

復制代碼代碼如下:
ob_start('ob_gzip'); //給ob_start()加一個參數,參數名就是剛才的函數名。這樣當內容進入緩沖區后PHP就會調用ob_gzip函數把它壓縮了。

 

最后結束緩沖區

 

復制代碼代碼如下:
ob_end_flush(); //結束緩沖區,輸出內容。當然,不用這個函數也行,因為程序執行到最后會自動將緩沖區內容輸出。

 

最終完整的實例

<?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;
}
?>

實例2

zlib壓縮和解壓縮swf文件的代碼

文件的例子:

//沒有加入判斷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);
//----------------------------------------------------------------------------------------------------
?>

解壓縮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);
//----------------------------------------------------------------------------------------------------
?>

實例3

開啟php zlib(gzip)壓縮輸出

php gzip配置知識點:

1、默認php是不開啟zlib整站壓縮輸出的,而是通過對需要壓縮輸出的頁面使用ob_gzhandler函數實現,兩者只能二選一,否則會報錯。

2、zlib.output_compression默認值為Off,你可以將其設置為On,或者output buffer size(默認為4k)

3、zlib.output_compression_level代表壓縮比,默認推薦設置壓縮比值為6,可選范圍為1-9,-1代表關閉php zlib(gzip)壓縮

二、保存php.ini配置文件,并重啟apache服務器

三、打開apache 配置文件httpd.conf,配置裝載deflate_module

這一步是最關鍵的開啟php gzip壓縮輸出配置步驟,很多網友會說我已經開啟了php.ini配置文件中的php gzip配置怎么還是沒有實現php gzip壓縮,就是因為沒有讓apache裝載deflate_module,方法如下,將

#LoadModule deflate_module modules/mod_deflate.so

去除開頭的#號,并重啟apache即可。

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久久久一本一区二区青青蜜月 | 成人午夜视频免费看 | 欧美乱淫 | 成年人性视频 | 操碰在线视频 | 日日综合 | 国产激情精品一区二区三区 | 午夜精品久久久久久久爽 | 欧美成人性色 | 免费观看高清视频网站 | 高清国产午夜精品久久久久久 | 草莓福利视频在线观看 | a级高清免费毛片av在线 | av电影免费观看 | 永久免费不卡在线观看黄网站 | 亚洲精品91| 成人久久久精品乱码一区二区三区 | 一区二区三区视频在线 | 久久久成人一区二区免费影院 | 久久综合综合久久 | 青草av.久久免费一区 | 日韩黄色一级视频 | 黄网站色成年大片免费高 | 99久久精约久久久久久清纯 | 久艹在线视频 | 欧美十区| 国产在线一级视频 | 久久久青| 99在线热视频 | a视频在线播放 | 国产精品免费久久久 | 天天看夜夜爽 | 黄色av免费网站 | sm高h视频| 4p一女两男做爰在线观看 | 最近日本电影hd免费观看 | 日本免费靠逼视频 | 免费看性xxx高清视频自由 | 国产羞羞视频在线观看 | 国产精品免费一区二区三区四区 | 精品国产乱码久久久久久丨区2区 |