2012-06-12 14 views
6

Sto comprimendo l'array con gzcompress (json_encode ($ arr), 9). Quindi sto convertendo un array in stringa con json_encode e poi compresso con gzcompress. Ma non sono riuscito a trovare la grande differenza nella dimensione della stringa risultante. Prima che la dimensione della compressione sia 488 KB e la dimensione della compressione sia 442 KB.Il modo migliore per comprimere la stringa in PHP

C'è un modo per comprimere ulteriormente la stringa?

Grazie in anticipo.

risposta

10

La qualità della compressione della stringa dipende dai dati che si desidera comprimere. Se consiste principalmente di dati casuali, non si otterranno molti miglioramenti in termini di dimensioni. Esistono molti algoritmi che sono stati progettati per un uso specifico.

Si dovrebbe provare a determinare quali sono principalmente i dati da comprimere e quindi selezionare una compressione corretta.

Proprio ora posso solo indirizzarti a bzcompress, bzip ha solitamente tassi di compressione più elevati rispetto a gzip.

10

Non sono sicuro che i numeri siano corretti, puoi usare gzdeflate invece di gzcompress poiché gzcompress aggiunge 6 byte all'output, 2 byte extra all'inizio e 4 byte extra alla fine.

Un semplice test mostra una stringa len 1756800 compressa a 99 byte mediante doppia compressione, 5164 byte se compressa una volta.

<?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)); 
?> 
Problemi correlati