PHP Conference Japan 2024

deflate_add

(PHP 7, PHP 8)

deflate_add遞增壓縮資料

說明

deflate_add(DeflateContext $context, 字串 $data, 整數 $flush_mode = ZLIB_SYNC_FLUSH): 字串|false

在指定的上下文中遞增壓縮資料。

參數

context

使用 deflate_init() 建立的上下文。

data

要壓縮的資料區塊。

flush_mode

其中一個選項:ZLIB_BLOCKZLIB_NO_FLUSHZLIB_PARTIAL_FLUSHZLIB_SYNC_FLUSH(預設值)、ZLIB_FULL_FLUSHZLIB_FINISH。通常您會希望設定 ZLIB_NO_FLUSH 以最大化壓縮,並使用 ZLIB_FINISH 結束最後一塊數據的處理。有關這些常數的詳細說明,請參閱 » zlib 手冊

回傳值

傳回壓縮後的數據塊,或在失敗時傳回 false

錯誤/例外

如果給定無效的參數,則會產生等級 E_WARNING 的錯誤。

更新日誌

版本 說明
8.0.0 context 現在需要 DeflateContext 實例;先前需要的是 資源

參見

新增筆記

使用者貢獻的筆記 1 則筆記

douglasjam at gmail dot com
6 年前
關於使用 deflate 函數分塊寫入 gzip 編碼檔案的範例。

<?php

$handler
= fopen('/tmp/test.csv', 'w');
$deflateContext = deflate_init(ZLIB_ENCODING_GZIP, ['level' => 9]);

$strings = [
'Hello, how are you?' . PHP_EOL,
'I am fine thanks' . PHP_EOL,
'Hello, how are you?' . PHP_EOL,
];

foreach (
$strings as $string) {
fwrite($handler, deflate_add($deflateContext, $string, ZLIB_NO_FLUSH));
}

fwrite($handler, deflate_add($deflateContext, '', ZLIB_FINISH));
fclose($handler);

echo
gzdecode(file_get_contents('/tmp/test.csv'));
To Top