Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

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