// Name of the file we're compressing
$file = "test.txt";
// Name of the gz file we're creating
$gzfile = "test.gz";
// Open the gz file (w9 is the highest compression)
$fp = gzopen ($gzfile, 'w9');
// Compress the file
gzwrite ($fp, file_get_contents($file));
// Close the gz file and we're done
gzclose($fp);
9条答案
按热度按时间chhkpiq41#
这段代码可以完成这个任务
vsdwdz232#
这里的其他答案在压缩过程中将整个文件加载到内存中,这将导致大文件出现“out of memory”错误。下面的函数在大文件上应该更可靠,因为它以512kb的块读取和写入文件。
kdfy810k3#
同样,你也可以使用php的wrappers,compression ones,只需对代码做一个最小的改动,你就可以在gzip,bzip2或者zip之间切换。
将
compress.zlib://
更改为compress.zip://
以进行zip压缩 (请参见此答案的注解),或将compress.bzip2://
更改为bzip2压缩。4xrmg8kj4#
gzencode()的简单单内衬:
jpfvwuh45#
如果你只是想解压缩一个文件,这是可行的,不会导致内存问题:
xqnpmsa86#
这对许多人来说可能是显而易见的,但是如果在您的系统上启用了任何程序执行函数(
exec
、system
、shell_exec
),您就可以使用它们来简单地gzip
文件。**N.B.:**使用
$filename
变量之前,请确保对其进行适当的清理,尤其是当它来自用户输入时(但不仅限于此)。它可能被用来运行任意命令,例如,通过包含类似my-file.txt && anothercommand
(或my-file.txt; anothercommand
)的内容。p3rjfoxz7#
这是一个改进的版本。我去掉了所有嵌套的if/else语句,降低了圈复杂度,通过异常更好地处理错误,而不是跟踪布尔错误状态,一些类型提示,如果文件已经有gz扩展名,我就退出。代码行有点长,但可读性更强。
bttbmeg08#
压缩文件夹以满足任何人的需要
kfgdxczn9#
复制(“文件. txt”,“压缩. zlib://”.“文件. txt. gz”);参见文件