2010-07-20 32 views

Trả lời

2

Download the Unzip library và bao gồm hoặc autoload thư viện unzip

$this->load->library('unzip'); 
+0

Liên kết đã chết .. hãy để tôi tìm các liên kết nếu tôi có thể và cập nhật – fedmich

3

Sử dụng các chức năng được thực hiện bởi phần mở rộng Zlib Compression.

đoạn này cho thấy làm thế nào để sử dụng một số chức năng đã có sẵn từ phần mở rộng:

// 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 chính nó có một số chức năng để đối phó với các file gzip.

Nếu bạn muốn tạo một tệp mới, không nén, nó sẽ giống như thế này.

Lưu ý: Điều này không kiểm tra xem tệp đích có tồn tại trước không, không xóa tệp đầu vào hoặc kiểm tra lỗi. Bạn thực sự cần sửa chữa chúng trước khi sử dụng trong mã sản xuất.

// 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); 

Lưu ý: Giao dịch này có gzip chỉ. Nó không đối phó với tar.

+1

Tôi đã sử dụng mã này và nó hoạt động hoàn hảo. chỉ cần hỏi làm thế nào để làm cho nó hoạt động với các thư mục bên trong tập tin gz và làm thế nào để hiển thị thư mục đầu ra của các tập tin được trích xuất. –

+1

@RealMan gzip chỉ hỗ trợ các tệp đơn lẻ. Bạn cần một tệp .tar.gz cho nhiều tệp. Tôi không chắc liệu PHP có hỗ trợ sẵn cho tar hay không. – Powerlord

3

Nếu bạn có quyền truy cập vào hệ thống():

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

Nên hoạt động nhưng phần lớn hệ thống thời gian() sẽ bị vô hiệu hóa vì lý do bảo mật – fedmich

Các vấn đề liên quan