Estoy usando una función de descompresión simple (como se ve a continuación) para mis archivos, así que no tengo que descomprimir archivos manualmente antes de que se procesen más.Desempaquetar archivos grandes con gzip en PHP
function uncompress($srcName, $dstName) {
$string = implode("", gzfile($srcName));
$fp = fopen($dstName, "w");
fwrite($fp, $string, strlen($string));
fclose($fp);
}
El problema es que si el archivo gzip es grande (por ejemplo, 50 MB) la descompresión toma una gran cantidad de memoria RAM para proceso.
La pregunta: ¿puedo analizar un archivo comprimido en fragmentos y seguir obteniendo el resultado correcto? ¿O existe otra forma mejor de manejar el problema de extraer archivos gzip grandes (incluso si lleva unos segundos más)?
¡Dulce! Probado en un archivo de 1 MB gzip que extrae a 48MB - antes: Tiempo de proceso: 12.1447s, el uso de memoria de pico: 96512kB - Su solución: Tiempo de proceso: 0.6705s, Pico de uso de la memoria: 256 kB Gracias :) Usted puede – Lukas
obtener un mejor rendimiento ajustando el número al final de la llamada gzread. No lo he intentado sin embargo. – Powerlord
20 veces mejor es lo suficientemente bueno, y seguirá siendo lo suficientemente bueno durante mucho tiempo. Tendría que estar muy desesperado o usar grandes archivos para tratar de modificar esto :) – Lukas