PHP Velho Oeste 2024

deflate_add

(PHP 7, PHP 8)

deflate_addインクリメンタルにデータを圧縮する

説明

deflate_add(DeflateContext $context, string $data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false

指定されたコンテクストで、インクリメンタルにデータを圧縮します。

パラメータ

context

deflate_init() で生成したコンテクスト

data

圧縮するデータ

flush_mode

ZLIB_BLOCK, ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH (デフォルト), ZLIB_FULL_FLUSH, ZLIB_FINISH のいずれかです。 通常は、圧縮率を最大にするために、 ZLIB_NO_FLUSH を指定するでしょうし、 データの最後のチャンクで終了させるために ZLIB_FINISH を指定するでしょう。 これらの定数の詳細な説明は » zlib manual を参照ください。

戻り値

圧縮されたデータのチャンクを返します。 失敗した場合に false を返します

エラー / 例外

不正な引数が与えられた場合、 エラーレベル E_WARNING が生成されます。

変更履歴

バージョン 説明
8.0.0 context は、 DeflateContext クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。

参考

  • deflate_init() - インクリメンタルな圧縮コンテキストを初期化する
add a note add a note

User Contributed Notes 1 note

up
1
douglasjam at gmail dot com
5 years ago
Example about to use deflate functions to write a gzip encoded file in chunks.

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