Zum Komprimieren von Daten kann gzcompress($data, $level) verwendet werden, wobei $level die "Stärke" der Komprimierung ist und zwischen 0 und 9 liegt.
Häufig wird ein Wert zwischen 3 und 6 verwendet.
Höhere Werte bringen wenig, kosten aber viel Performance.
Niedrigere erzeugen auch nur wenig Kompression.
Vor dem Komprimieren kann es empfehlenswert sein, die Daten mit serialize() in einen String umzuwandeln, sofern sie noch nicht in einem solchen vorhanden sind.
Um komprimierte Daten wieder zu dekomprimieren wird gzuncompress($data) verwendet.
Die Angabe der Komprimierungsstärke ist nicht notwendig, diese Information wird automatisch dem komprimierten String entnommen.
Häufig wird ein Wert zwischen 3 und 6 verwendet.
Höhere Werte bringen wenig, kosten aber viel Performance.
Niedrigere erzeugen auch nur wenig Kompression.
PHP-Code
<?php $string = 'String String String String String String String String String String String String'; $compressed = gzcompress($string, 9); echo("Zeichenlänge des nicht komprimierten Strings: ".strlen($string)."\n"); echo("Zeichenlänge des komprimierten Strings: ".strlen($compressed)); ?>
Ausgabe
Zeichenlänge des nicht komprimierten Strings: 83 Zeichenlänge des komprimierten Strings: 18
Vor dem Komprimieren kann es empfehlenswert sein, die Daten mit serialize() in einen String umzuwandeln, sofern sie noch nicht in einem solchen vorhanden sind.
PHP-Code
<?php $arr = array('foo'=>'bar', 'foo foo'=>'bar', 'fubar'=>'bart'); $serialized = serialize($arr); $compressed = gzcompress($serialized, 9); echo("Zeichenlänge serialisiert: ".strlen($serialized)."\n"); echo("Zeichenlänge serialisiert und komprimiert: ".strlen($compressed)); ?>
Ausgabe
Zeichenlänge serialisiert: 73 Zeichenlänge serialisiert und komprimiert: 46
Um komprimierte Daten wieder zu dekomprimieren wird gzuncompress($data) verwendet.
Die Angabe der Komprimierungsstärke ist nicht notwendig, diese Information wird automatisch dem komprimierten String entnommen.
PHP-Code
<?php $arr = array('eins', 'zwei', 'drei', 'vier'); $serialized = serialize($arr); $compressed = gzcompress($serialized, 9); $uncompressed = gzuncompress($compressed); $arr2 = unserialize($uncompressed); echo("Zeichenlänge serialisiert: ".strlen($serialized)."\n"); echo("Zeichenlänge serialisiert und komprimiert: ".strlen($compressed)."\n"); echo("Zeichenlänge serialisiert und dekomprimiert: ".strlen($uncompressed)."\n"); var_dump($arr2); ?>
Ausgabe
Zeichenlänge serialisiert: 66 Zeichenlänge serialisiert und komprimiert: 53 Zeichenlänge serialisiert und dekomprimiert: 66 array(4) { [0]=> string(4) "eins" [1]=> string(4) "zwei" [2]=> string(4) "drei" [3]=> string(4) "vier" }