PHP调用的mod_zipnginx模块的压缩文件包

PHP本身具有压缩模块可以产生压缩文件。但压缩模块只能用本地文件。如果你需要把输出文件来自网络,你必须保存临时文件,当文件数量较大或文件较大,这是一个杯,此外,从PHP大包装文件输出占用了大量的时间和影响PHP进程并发能力。

Nginx有第三方模块,mod_zip.it也可以输出压缩包。它是x-accel-redirect有些相似,只需要PHP输出相应的文件和其他信息的路径,然后给一个特殊的响应头。

响应头使用nginx模块x-archive-files拉链:拉链。这个响应头,nginx的ZIP模块处理文本和完成包的输出响应。

例如:
复制代码代码如下所示:
printf(%s %d %s %s
按项目输出要打包的文件。

美元是一个16级文件的CRC32 CRC32值。也不能提供,使用代替。但它不能使用范围块下载,http。
$大小是文件大小的十进制整数。
$ URL的源地址进行包装。如果你想把一个本地文件,你可以先做一个nginx的内部路径。
$路径是zip包中的路径。

但它是不可能创建一个空目录。一方面,ZIP格式开始于一个空目录没有定义,和后来的标准和软件是通过添加/结束0大小的文件来实现的。在这一点上,你需要做一个0大小的内部在nginx的,例如文件然后,在_0.and /输出
复制代码代码如下所示:
printf(%s %d %s %s
如果你想支持中文路径,你可以使用一个响应头如x-archive-charset:UTF8,这是你的编码输出。nginx的ZIP模块将转换成utf8的标准格式。然而,每个软件对这个zip不同标准的支持,如Windows压缩目录,这只能用GBK直接输出。其他软件对编码支持不同的影响。在WinRAR,7zip,和Windows zip目录已经过测试,WinRAR可以很好的supported.7zip可能把中国空目录的一部分为一个0大小的文件,所以,还需要考虑。