Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用zLib压缩多个文件_Php_Zlib - Fatal编程技术网

PHP使用zLib压缩多个文件

PHP使用zLib压缩多个文件,php,zlib,Php,Zlib,上面的代码可以工作,但只有一个文件被添加到存档中。使用zLib将多个文件添加到存档中的最佳方法是什么 $files = array("images/1.jpg", "images/2.jpg", "images/3.jpg"); foreach($files as $file){ $temp = null; $fp_in = fopen($file,'rb'); while(!feof($fp_in)){ $temp .= fread($fp_i

上面的代码可以工作,但只有一个文件被添加到存档中。使用zLib将多个文件添加到存档中的最佳方法是什么

$files = array("images/1.jpg", "images/2.jpg", "images/3.jpg"); 
foreach($files as $file){ 
    $temp = null; 
    $fp_in = fopen($file,'rb'); 
    while(!feof($fp_in)){ 
        $temp .= fread($fp_in,1024); 
    } 
    $output[$file] = $temp; 
    fclose($fp_in); 
} 

$output = implode('"',$output);

$zp = gzopen( 'sequences/backup.gz', "w9" );
gzwrite( $zp, $output );
gzclose( $zp );

这是更新后的代码,在Tim的帮助下,谢谢

gz只是一种压缩技术,而不是归档技术。这就是为什么在unix上经常看到
.tar.gz
文件的原因
.tar
用于合并所有文件和压缩归档文件的
.gz
。那么正确的过程是压缩它们,然后统一它们?有没有一种方法可以使用zLib和PHP实现这一点?
require 'Tar.php';
$tar_object = new Archive_Tar("tarname.tar");
$tar_object->setErrorHandling(PEAR_ERROR_PRINT);  // Optional error handling
$v_list = array("images/1.jpg", "images/2.jpg", "images/3.jpg"); 
$tar_object->createModify($v_list, "install");
  function compress( $srcFileName, $dstFileName ){
   // getting file content
   $fp = fopen( $srcFileName, "r" );
   $data = fread ( $fp, filesize( $srcFileName ) );
   fclose( $fp );
   // writing compressed file
   $zp = gzopen( $dstFileName, "w9" );
   gzwrite( $zp, $data );
   gzclose( $zp );
   echo 'success';
}
compress("tarname.tar","tarname.tar.gz");
unlink('tarname.tar');