我有一个php表单,其中包含一系列复选框,这些复选框都包含指向文件的链接。一旦用户点击他们想要的复选框(文件),它就会压缩文件并强制下载。
我有一个简单的php zip force下载工作,但当其中一个文件很大或者有人说让我们选择整个列表进行压缩和下载时,我的服务器出错了。
我知道我可以增加服务器大小,但还有其他方法吗?
答案 0 :(得分:3)
如果你真的需要它来通过PHP,最好的想法是使用流。对于流,内存要求非常低,并且不会随着内容的大小而增长。
答案 1 :(得分:2)
答案 2 :(得分:0)
您的服务器内存不足还是不允许您将最终结果发送给客户端?如果它只是内存不足,请在文件系统上运行压缩。您可以使用
在PHP中执行系统命令system("...command...");
因此,您可以根据用户选择将所选文件聚合在一个临时目录中(使用系统调用进行文件复制),然后压缩临时目录(使用系统调用来调用pkzip),然后请PHP将临时文件发送到客户端,之后您的PHP脚本可以删除它。
通过这种方式,压缩不会消耗PHP应用程序中的内存。
答案 3 :(得分:0)
您可以在Web服务器/ php级别打开gzip并在PHP脚本中跳过压缩。然后,只需在调用readfile()
之间输出正确的zip文件头。
答案 4 :(得分:-1)
根据内容的动态程度以及您拥有的组合数量,您可以简单地为每个组合预先构建一个zip文件,然后将其返回给用户。这可能会变得很快,因为有5个选项,你必须维护32个不同的档案。