2012-06-12 13 views
6

Ich komprimiere das Array mit gzcompress (json_encode ($ arr), 9). Also ich konvertiere Array in String mit json_encode und dann mit gzcompress komprimieren. Aber ich konnte den großen Unterschied in der Größe der resultierenden Zeichenfolge nicht finden. Vor der Komprimierung beträgt die Größe 488 KB und nach der Komprimierung beträgt die Größe 442 KB.Der beste Weg, um die Zeichenfolge in PHP zu komprimieren

Gibt es eine Möglichkeit, die Zeichenfolge weiter komprimieren?

Vielen Dank im Voraus.

Antwort

10

Wie gut die Komprimierung der Zeichenfolge ist, hängt von den Daten ab, die Sie komprimieren möchten. Wenn es hauptsächlich aus zufälligen Daten besteht, werden Sie nicht so viele Verbesserungen in der Größe erreichen. Es gibt viele Algorithmen, die für eine bestimmte Verwendung entwickelt wurden.

Sie sollten versuchen zu bestimmen, was Ihre Daten zu komprimieren hauptsächlich besteht aus und wählen Sie dann eine ordnungsgemäße Komprimierung.

Jetzt kann ich nur auf bzcompress verweisen, bzip hat normalerweise höhere Komprimierungsraten als gzip.

10

Ich bin nicht sicher, Ihre Zahlen sind richtig, tho könnten Sie gzdeflate anstelle von gzcompress als gzcompress 6 Bytes an der Ausgabe, 2 zusätzliche Bytes am Anfang und 4 zusätzliche Bytes am Ende.

Ein einfacher Test zeigt eine 1756800 Len-Zeichenfolge, die durch doppelte Komprimierung auf 99 Byte komprimiert wurde, 5164 Byte, wenn sie einmal komprimiert wurde.

<?php 
$string = str_repeat('1234567890'.implode('', range('a', 'z')), 48800); 

echo strlen($string); //1756800 bytes 

$compressed = gzdeflate($string, 9); 
$compressed = gzdeflate($compressed, 9); 

echo '<br/>'.strlen($compressed).'<br/>';//99 bytes 

echo gzinflate(gzinflate($compressed)); 
?> 
Verwandte Themen