Sto usando una semplice funzione di decompressione (come visto sotto) per i miei file, quindi non devo decomprimere i file manualmente prima che vengano elaborati ulteriormente.Scompattiamo file di grandi dimensioni con gzip in PHP
function uncompress($srcName, $dstName) {
$string = implode("", gzfile($srcName));
$fp = fopen($dstName, "w");
fwrite($fp, $string, strlen($string));
fclose($fp);
}
Il problema è che se il file gzip è grande (ad esempio 50mb) la decompressione richiede una grande quantità di ram processo.
La domanda: è possibile analizzare un file gzip in blocchi e ottenere comunque il risultato corretto? O c'è un altro modo migliore per gestire il problema dell'estrazione di file gzip di grandi dimensioni (anche se richiede qualche secondo in più)?
Dolce! Testato su un file da 1 MB gzip che estrae a 48MB - prima: il tempo di processo: 12.1447s, l'uso della memoria di picco: 96512kB - La tua soluzione: tempo di processo: 0.6705s, l'uso della memoria di picco: 256kB Grazie :) – Lukas
Si può ottenere prestazioni migliori modificando il numero alla fine della chiamata gzread. Non l'ho provato però. – Powerlord
20 volte meglio è abbastanza buono, e rimarrà abbastanza buono per un tempo molto lungo. Dovrei essere molto disperato o usare file enormi per provare a modificare ulteriormente questa cosa :) – Lukas