中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中gzencode、gzdeflate和gzcompress三者的區別是什么

發布時間:2020-12-24 16:32:03 來源:億速云 閱讀:537 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關PHP中gzencode、gzdeflate和gzcompress三者的區別是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

?gzencode 默認使用ZLIB_ENCODING_GZIP編碼,使用gzip壓縮格式,實際上是使用defalte 算法壓縮數據,然后加上文件頭和adler32校驗
?gzdeflate 默認使用ZLIB_ENCODING_RAW編碼方式,使用deflate數據壓縮算法,實際上是先用 LZ77 壓縮,然后用霍夫曼編碼壓縮
?gzcompress ;默認使用ZLIB_ENCODING_DEFLATE編碼,使用zlib壓縮格式,實際上是用 deflate 壓縮數據,然后加上 zlib 頭和 CRC 校驗

這三個函數的比較實質上是三種壓縮方法:deflate, zlib, gzip的比較。
從性能的維度看:deflate 好于 gzip 好于 zlib
從文本文件默認壓縮率壓縮后體積的維度看:deflate 好于 zlib 好于 gzip

這三種算法中gzip 、zlib的作者都是Jean-Loup Gailly和 Mark Adler。
這兩種算法以及圖形格式png,使用的壓縮算法卻都是deflate算法。
deflate算法是同時使用了LZ77算法與哈夫曼編碼(Huffman Coding)的一個無損數據壓縮算法。
它最初是由Phil Katz為他的PKZIP歸檔工具第二版所定義的,后來定義在 RFC 1951規范中。

deflate算法的壓縮與解壓的實現過程可以在壓縮庫zlib上找到。
PHP的壓縮實現依賴于zlib,zlib是一個提供了 deflate, zlib, gzip 壓縮方法的函數庫。
我們所使用的上面三個函數,將參數中的encoding轉為相同,壓縮率設置相同,則其最終調用的是同一個函數,效果和性能一樣。

PHP的zlib實現是以擴展的方式存在于ext/zlib目錄中。通過deflateInit2() + deflate() + deflateEnd()三個函數配合完成壓縮功能,inflateInit2() + inflate() + inflateEnd()三個函數配合完成解壓功能。壓縮最終都是通過php_zlib_encode函數實現調用,除了輸入的字符串,壓縮率,結果的輸出外,不同的入口函數調用參數不同的是其encoding。deflateInit2的第四個參數指定encoding,PHP定義了三個常量:

復制代碼 代碼如下:


#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

三個函數在調用過程可以直接指定encoding使用其它的算法:

復制代碼 代碼如下:


zlib:   ZLIB_ENCODING_DEFLATE
gzip: ZLIB_ENCODING_GZIP
deflate: ZLIB_ENCODING_RAW

此三個函數是三種算法的簡單調用方式,以更好的命名展現。三個函數間可以通過指定相同的encoding達到相同的效果,并且PHP也提供zlib_encode函數作為通用的壓縮函數。

以上就是PHP中gzencode、gzdeflate和gzcompress三者的區別是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洱源县| 永兴县| 崇信县| 云林县| 巴中市| 抚顺县| 唐山市| 焦作市| 蒲城县| 栾城县| 睢宁县| 大方县| 崇礼县| 漠河县| 靖安县| 周至县| 久治县| 昆明市| 佛教| 曲麻莱县| 奇台县| 万盛区| 菏泽市| 绩溪县| 宜黄县| 秀山| 蓬溪县| 平南县| 常熟市| 墨玉县| 隆安县| 鄂伦春自治旗| 新郑市| 阿勒泰市| 竹溪县| 天长市| 井陉县| 邹平县| 明溪县| 思南县| 巴楚县|