Manuál PHP | ||
---|---|---|
Předcházející | Příloha O. Seznam dostupných filtrů | Další |
Kompresní filtry
Zatímco Kompresní wrappery poskytují cestu k vytváření kompatibilních GZIP a BZ2 souborů v místním souborovém systému, nejsou schopny poskytnout zobecněnou kompresi síťových streamů, ani možnost začít s nekomprimovaným streamem a změnit ho na komprimovaný. Kompresní filtry lze ovšem kdykoli aplikovat na libovolný stream.
Poznámka: Kompresní filtry negenerují hlavičky a ukončovací sekvence, jak to dělají konzolové utility jako gzip. Pouze komprimují a dekomprimují užitečné části datových streamů.
zlib.deflate (komprese) a
zlib.inflate (dekomprese) jsou implementace
kompresních metod popsaných v RFC 1951.
Filtr deflate přijímá až tři parametry předané jako
asociativní pole.
level
udává, jakou účinnost komprese použít (1-9).
Vyšší čísla vedou k menšímu objemu dat za cenu delšího času zpracování.
Existují také dvě speciální kompresní úrovně: 0 (žádná komprese) a -1
(vnitřní výchozí hodnota zlib - momentálně 6).
window
je dvojkový logaritmus velikosti kompresního
okna. Vyšší hodnoty (až 15 -- 32768 B) vedou k lepší kompresi při větších
nárocích na paměť. kdežto nižší (od 9 -- 512 B) znamenají horší kompresi
za menší spotřeby paměti. Výchozí hodnota parametru
window
je nyní 15.
memory
udává, kolik paměti by se mělo alokovat.
Rozsah platných hodnot je od 1 (minimální alokace) do 9 (maximální alokace).
Tato hodnota má vliv pouze na rychlost, neovlivňuje účinnost komprese.
Poznámka: Protože úroveň komprese je nejčastěji používaným parametrem, lze ji alternativně udat také jako obyčejnou celočíselnou hodnotu (namísto prvku pole).
Kompresní filtry zlib.* jsou k dispozici v PHP od verze 5.1.0, pokud je zapnuta podpora zlib. Jsou dostupné též jako backport ve verzi 5.0.x po nainstalování balíku zlib_filter z PECL. Tyto filtry nejsou dostupné v PHP 4.
Příklad O-8. jednoduché zlib.deflate
|
bzip2.compress a
bzip2.decompress
pracují stejným způsobem jako filtry zlib popsané výše.
Filtr bzip2.compress přijímá až dva parametry poskytnuté
jako prvky asociativního pole:
blocks
je hodnota typu integer od 1 do 9, udávající
počet 100KB bloků paměti, které se alokují pro zpracování.
work
je také typu integer, a to v rozmezí 0 až 250.
Říká, jak velké úsilí se má vynaložit s normální kompresní metodou, než
se přejde na pomalejší, ale spolehlivější metodu. Ladění tohoto parametru
má vliv pouze na rychlost komprese. Nemění se tím ani velikost komprimovaného
výstupu, ani využití paměti. Hodnota 0 znamená, že knihovna bzip použije
vnitřní výchozí hodnotu.
Filtr bzip2.decompress přijímá pouze jeden parametr,
který se předává buď jako normální pravdivostní hodnota, nebo jako prvek
small
v asociativním poli.
small
, pokud má hodnotu TRUE, říká knihovně bzip,
že se má k dekompresi použít minimální množství paměti na úkor rychlosti.
Kompresní filtry bzip2.* jsou dostupné od verze 5.1.0, pokud je zapnuta podpora bz2. Jsou dostupné též jako backport ve verzi 5.0.x po nainstalování balíku bz2_filter z PECL. Tyto filtry nejsou dostupné v PHP 4.
Příklad O-9. bzip2.compress a bzip2.decompress
|
Předcházející | Domů | Další |
Konverzní filtry | Nahoru |