PHP gzip ile büyük dosyaları açmak

3 Cevap php

(Aşağıda görüldüğü gibi) onlar daha işlenmeden önce elle dosyaları halletmek zorunda değilsiniz bu yüzden benim dosyaları için basit bir unzip fonksiyonu kullanıyorum.

function uncompress($srcName, $dstName) {
    $string = implode("", gzfile($srcName));
    $fp = fopen($dstName, "w");
    fwrite($fp, $string, strlen($string));
    fclose($fp);
}

Sorun gzip dosya büyükse (örneğin 50mb) Ayıklama işlemi ram büyük miktarda almasıdır.

Soru: Ben parçalar gzip'li dosyayı ayrıştırmak ve hala doğru sonuç alabilirim? Ya da (daha bir kaç saniye sürüyor olsa bile) büyük gzip dosyaların ayıklanması sorunu işlemek için daha iyi bir başka yolu var mı?

3 Cevap

gzfile () gzopen, gzread ve gzclose çağıran bir kolaylık yöntemidir.

Yani, evet, elle gzopen yapmak ve parçalar dosyayı gzread edebilirsiniz.

Bu 4kB parçalar dosya sıkıştırmasını olacaktır:

function uncompress($srcName, $dstName) {
    $sfp = gzopen($srcName, "rb");
    $fp = fopen($dstName, "w");

    while (!gzeof($sfp)) {
        $string = gzread($sfp, 4096)
        fwrite($fp, $string, strlen($string));
    }
    gzclose($sfp);
    fclose($fp);
}

ile deneyin

function uncompress($srcName, $dstName) {
    $fp = fopen($dstName, "w");
    fwrite($fp, implode("", gzfile($srcName)));
    fclose($fp);
}

$ Uzunluk parametre isteğe bağlıdır.