2010-07-20 17 views

cevap

3

Zlib Compression uzantısı tarafından uygulanan işlevlerini kullanın.

Bu pasajı uzantısından hazır fonksiyonların bazılarını nasıl kullanılacağını gösteren:

// open file for reading 
$zp = gzopen($filename, "r"); 

// read 3 char 
echo gzread($zp, 3); 

// output until end of the file and close it. 
gzpassthru($zp); 
gzclose($zp); 
36

PHP kendisi gzip dosyaları ile başa çıkmak için bir dizi fonksiyonu vardır.

Yeni, sıkıştırılmamış bir dosya oluşturmak istiyorsanız, böyle bir şey olurdu.

Not: Bu, hedef dosyanın var olup olmadığını kontrol etmez, giriş dosyasını silmez veya herhangi bir hata denetimi yapmaz. Bunu üretim kodunda kullanmadan önce düzeltmelisiniz.

// This input should be from somewhere else, hard-coded in this example 
$file_name = 'file.txt.gz'; 

// Raising this value may increase performance 
$buffer_size = 4096; // read 4kb at a time 
$out_file_name = str_replace('.gz', '', $file_name); 

// Open our files (in binary mode) 
$file = gzopen($file_name, 'rb'); 
$out_file = fopen($out_file_name, 'wb'); 

// Keep repeating until the end of the input file 
while(!gzeof($file)) { 
    // Read buffer-size bytes 
    // Both fwrite and gzread and binary-safe 
    fwrite($out_file, gzread($file, $buffer_size)); 
} 

// Files are done, close files 
fclose($out_file); 
gzclose($file); 

Not: Bu gzip sadece ilgilenir. Katranla uğraşmaz.

+1

Bu kodu kullandım ve güncellerseniz, linkleri bulalım. sadece gz dosyasının içindeki klasörlerle nasıl çalışılacağını ve çıkarılan dosyaların çıktı klasörünün nasıl görüntüleneceğini sorar. –

+1

@RealMan gzip yalnızca tek dosyaları destekler. Birden çok dosya için bir .tar.gz'ye ihtiyacınız var. PHP'nin katran için yerleşik destek olup olmadığı konusunda emin değilim. – Powerlord

3

sisteme erişimi() varsa:

system("gunzip file.sql.gz"); 
+0

Çalışmalı, ancak çoğu zaman sistem() güvenlik nedeniyle devre dışı bırakılacak – fedmich

İlgili konular