搜尋
首頁後端開發php教程比較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_Z EN  //gzip 15 + 16#define PHP_ZLIB_ENCODING_DEFLATE     0x0f      // zlib 15

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

zlib:   ZLIB_ENCODING_DEFLATE gzip: ZLIB_ENCODING_GZIPdeflate: ZLIB_ENCODING_RAW

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

以上是比較PHP的壓縮函數gzencode、gzdeflate和gzcompress的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP中的PDO是什麼?PHP中的PDO是什麼?Apr 28, 2025 pm 04:51 PM

本文討論了PHP數據對象(PDO),這是PHP中數據庫訪問的擴展名。它通過準備好的語句及其對MySQLI的好處,包括數據庫抽象和更好的錯誤處理,強調了PDO在增強安全性方面的作用。

php中的memcache是​​什麼?是否可以在幾個PHP項目之間共享一個memcache的一個實例?php中的memcache是​​什麼?是否可以在幾個PHP項目之間共享一個memcache的一個實例?Apr 28, 2025 pm 04:47 PM

memcache和memcached是通過減少數據庫負載加快Web應用程序的PHP緩存系統。可以在仔細的密鑰管理的項目之間共享一個實例。

使用MySQL和PHP創建新數據庫的步驟是什麼?使用MySQL和PHP創建新數據庫的步驟是什麼?Apr 28, 2025 pm 04:44 PM

文章討論了使用PHP創建和管理MySQL數據庫的步驟,專注於連接,創建,常見錯誤和安全措施。

JavaScript是否與PHP相互作用?JavaScript是否與PHP相互作用?Apr 28, 2025 pm 04:43 PM

本文討論了JavaScript和PHP如何通過HTTP請求間接相互作用,因為它們的環境不同。它涵蓋了將數據從JavaScript發送到PHP的方法

如何從命令行執行PHP腳本?如何從命令行執行PHP腳本?Apr 28, 2025 pm 04:41 PM

本文討論了從命令行執行PHP腳本的,包括步驟,常見選項,故障排除錯誤和安全考慮。

PHP中的梨是什麼?PHP中的梨是什麼?Apr 28, 2025 pm 04:38 PM

梨是可重複使用組件的PHP框架,通過包裝管理,編碼標準和社區支持增強開發。

PHP的用途是什麼?PHP的用途是什麼?Apr 28, 2025 pm 04:37 PM

PHP是一種多功能的腳本語言,主要用於Web開發,創建動態頁面,還可以用於命令行腳本,桌面應用程序和API開發。

PHP的舊名稱是什麼?PHP的舊名稱是什麼?Apr 28, 2025 pm 04:36 PM

文章討論了PHP從1995年的“個人主頁工具”到1998年的“ PHP:超文本預處理器”的演變,這反映了其超越個人網站的擴展使用。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具