J'utilise une simple fonction de décompression (comme ci-dessous) pour mes fichiers, donc je n'ai pas besoin de décompresser les fichiers manuellement avant de les traiter.Déballer des fichiers volumineux avec gzip en PHP
function uncompress($srcName, $dstName) {
$string = implode("", gzfile($srcName));
$fp = fopen($dstName, "w");
fwrite($fp, $string, strlen($string));
fclose($fp);
}
Le problème est que si le fichier gzip est grande (par exemple 50MB) la décompression prend une grande quantité de mémoire vive à traiter.
La question: puis-je analyser un fichier gzip en morceaux et obtenir le bon résultat? Ou existe-t-il une autre meilleure façon de gérer le problème de l'extraction de gros fichiers gzip (même si cela prend quelques secondes de plus)? paramètre
Doux! Testé sur un fichier gzip 1Mo qui extrait à 48Mo - avant: le temps du processus: 12.1447s, utilisation de mémoire de pointe: 96512kB - Votre solution: le temps du processus: 0.6705s, utilisation de mémoire de pointe: 256 Ko Merci :) – Lukas
Vous pouvez obtenir de meilleures performances en ajustant le nombre à la fin de l'appel gzread. Je n'ai pas essayé cependant. – Powerlord
20 fois mieux est assez bon, et restera assez bon pendant très longtemps. Je devrais être très désespéré ou en utilisant des fichiers énormes pour essayer et améliorer cette chose :) – Lukas