English 中文(简体)
使用php压缩大文件[closed]
原标题:
  • 时间:2009-02-16 07:42:08
  •  标签:
Closed. This question needs to be more focused. It is not currently accepting answers.

想要改善这个问题吗?通过编辑帖子,更新问题以便它仅关注一个问题。

Closed 5 years ago.

我有一个PHP表单,其中包含一堆复选框,所有复选框都包含文件链接。一旦用户单击他们想要的复选框(文件),它就会打包这些文件并强制下载。

我成功实现了一个简单的php zip强制下载,但当其中一个文件很大或者有人选择了整个列表进行压缩并下载时,我的服务器会出错。

我知道我可以增加服務器的大小,但是否還有其他方法?

问题回答

如果您真的需要通过PHP进行,最好的想法是使用流。使用流,内存需求非常低,并且不随内容大小而增长。

这是您的服务器内存不足还是不允许您将最终结果发送给客户端?如果只是内存不足,请在文件系统上运行压缩。您可以使用PHP执行系统命令。

system("...command...");

因此,根据用户的选择,您可以将所选文件聚合到临时目录中(使用系统调用进行文件复制),然后压缩临时目录(使用系统调用调用 pkzip),然后请求 PHP 向客户端发送临时文件,之后您的 PHP 脚本可以将其删除。

以这种方式,压缩不会消耗您的PHP应用程序的内存。

您可以在Web服务器/PHP级别上启用gzip,跳过PHP脚本中的压缩。然后,只需要在调用readfile()之间输出适当的zip文件头即可。

根据内容的动态程度和组合数,您可以为每个组合预先构建一个zip文件,然后将其返回给用户。不过,这可能很快就会过时,因为对于5个选项,您必须维护32个不同的存档文件。





相关问题
热门标签