\Drupal\strata\Codec BrotliCodec

Brotli through `ext-brotli`.

Reaches the highest ratio Strata measured on Drupal-shaped data - 7.68x whole-stream and 6.31x in 8 KiB frames - but at 0.7 MB/s at its top quality, roughly a quarter of zstd -19's throughput for a comparable result once zstd has a trained dictionary. The extension does support dictionaries, through the fourth argument to brotli_compress() and the second to brotli_uncompress().

It is offered rather than preferred on throughput, not on capability: a site with ext-brotli and not ext-zstd is better off here than on gzip, and CodecRegistry orders it accordingly.

Summary

Methods
Properties
Constants
id
isAvailable
unavailableReason
supportsDictionary
levels
compress
decompress
No public properties found
No public constants found
No protected methods found
No protected properties found
No protected constants found
clamp
assertAvailable
No private properties found
No private constants found

Methods

id()

id() : string

The stable identifier recorded in a frame header.

Returns

string —

A short lowercase token such as "zstd", "gzip" or "none".

isAvailable()

isAvailable() : bool

Whether this codec can run on this host right now.

Returns

bool —

TRUE when every extension or binary the codec needs is present.

unavailableReason()

unavailableReason() : string|null

Why the codec is unavailable, for the settings form and hook_requirements().

Returns

string|null —

A short human-readable reason, or NULL when the codec is available.

supportsDictionary()

supportsDictionary() : bool

Whether the codec accepts a training dictionary.

Returns

bool —

TRUE when compress() and decompress() honour their $dictionary argument.

levels()

levels() : array{min: int, max: int, default: int, fast: int, dense: int}

The compression levels this codec accepts.

Returns

array{min: int, max: int, default: int, fast: int, dense: int} —

The usable range, the default, the level to use on the flush path where throughput matters, and the level to use during compaction where ratio matters.

compress()

compress(string  $data, ?int  $level = null, ?string  $dictionary = null) : string

Compresses a buffer.

Parameters

string $data

The bytes to compress. An empty string compresses to an empty string, so that an absent payload never becomes a non-empty frame.

?int $level

A level within CompressionCodecInterface::levels(), or NULL for the default.

?string $dictionary

Raw dictionary bytes, or NULL. Ignored by codecs that report no dictionary support, so a caller never has to branch on it.

Returns

string —

The compressed bytes.

decompress()

decompress(string  $data, ?string  $dictionary = null) : string

Decompresses a buffer.

Parameters

string $data

The compressed bytes.

?string $dictionary

The same dictionary bytes used to compress, or NULL.

Returns

string —

The original bytes.

clamp()

clamp(int|null  $level) : int

Brings a requested level into the supported range.

Parameters

int|null $level

The requested level, or NULL for the default.

Returns

int —

A level this codec accepts.

assertAvailable()

assertAvailable() : void

Guards every entry point.

Throws

\RuntimeException

When ext-brotli is not loaded.

Returns

void —