Daten per gzip komprimieren und dekomprimieren

Wie die gzip-Funktionen genutzt werden können, um vorhandene Daten zu komprimieren und diesen Vorgang wieder umzukehren

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.
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"
}