Używam prostej funkcji rozpakowywania (jak widać poniżej) dla moich plików, więc nie muszę rozpakowywać plików ręcznie, zanim zostaną one przetworzone dalej.Rozpakowywanie dużych plików za pomocą gzip w PHP
function uncompress($srcName, $dstName) {
$string = implode("", gzfile($srcName));
$fp = fopen($dstName, "w");
fwrite($fp, $string, strlen($string));
fclose($fp);
}
Problem polega na tym, że jeśli plik gzip jest duży (na przykład 50 MB), rozpakowanie zajmuje dużą ilość pamięci RAM do przetworzenia.
Pytanie: czy można przeanalizować spakowany plik gzip w kawałki i nadal uzyskać prawidłowy wynik? Czy istnieje lepszy inny sposób radzenia sobie z problemem wyodrębniania dużych plików gzip (nawet jeśli potrwa to kilka sekund)?
Słodki! Testowane na pliku 1MB gzip że wyciąga do 48MB - przed: czas procesu: 12.1447s maksymalne wykorzystanie pamięci: 96512kB - Twoje rozwiązanie: Czas procesu: 0.6705s, Peak wykorzystanie pamięci: 256kB Dziękuję :) – Lukas
Użytkownik może uzyskać lepszą wydajność, poprawiając numer na końcu wywołania gzread. Jednak tego nie próbowałem. – Powerlord
20 razy lepszy jest wystarczająco dobry i pozostanie wystarczająco dobry przez bardzo długi czas. Musiałbym być bardzo zdesperowany lub używać ogromnych plików, aby spróbować to ulepszyć :) – Lukas