Php 从S3文件列表创建一个.gz文件

Php 从S3文件列表创建一个.gz文件,php,zlib,Php,Zlib,我正试图从s3文件列表中创建一个.gz文件。我能够得到文件列表并读取文件的内容。我就是不知道如何将它们写入.gz文件。还有没有一种方法可以让我在下载之前将它们写入内存而不是文件 这就是我目前正在做的: $files = $disk->files('s3/files'); $outFile = 'opt.gz'; $gz = gzopen($outFile, 'w9'); // Add the items to the gz file foreach($files as $file) {

我正试图从
s3
文件列表中创建一个
.gz
文件。我能够得到文件列表并读取文件的内容。我就是不知道如何将它们写入
.gz
文件。还有没有一种方法可以让我在下载之前将它们写入内存而不是文件

这就是我目前正在做的:

$files = $disk->files('s3/files');
$outFile = 'opt.gz';
$gz = gzopen($outFile, 'w9');
// Add the items to the gz file
foreach($files as $file) {
    $content = $disk->getDriver()->read($file);
    file_put_contents($outFile, gzencode($content), FILE_APPEND);
}
gzclose($gz);

// Download the file
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($outFile).'"');
header('Content-Length: ' . filesize($outFile));
readfile($outFile);

Gzip在字节流上运行,没有“文件”的概念。您可能希望通过一个像
tar
这样的归档程序来流式处理它,该归档程序知道这些事情,然后gzip它。谢谢。我刚学会这一点,所以我用了一个
ZipArchive