我有一个包含许多复选框的php表单,每个复选框都包含指向文件的链接。一旦用户点击他们想要的复选框(文件),它就会将文件压缩并强制下载。
我已经成功实现了一个简单的php zip强制下载功能,但是当其中一个文件很大或者如果有人选择了整个列表进行压缩和下载时,我的服务器就会出错。
我知道可以增加服务器大小,但还有其他方法吗?
我有一个包含许多复选框的php表单,每个复选框都包含指向文件的链接。一旦用户点击他们想要的复选框(文件),它就会将文件压缩并强制下载。
我已经成功实现了一个简单的php zip强制下载功能,但是当其中一个文件很大或者如果有人选择了整个列表进行压缩和下载时,我的服务器就会出错。
我知道可以增加服务器大小,但还有其他方法吗?
如果您确实需要通过PHP进行传输的话,最好使用流。使用流,内存需求非常低,并且不会随着内容大小的增加而增长。
是你的服务器内存不足还是它不允许你将最终结果发送给客户端?如果只是内存不足,那么可以在文件系统上运行压缩。你可以使用 PHP 执行系统命令。
system("...command...");
因此,您可以根据用户选择,在临时目录中聚合所选文件(使用系统调用进行文件复制),然后压缩临时目录(使用系统调用调用pkzip),然后要求PHP将临时文件发送给客户端,之后您的PHP脚本可以删除它。
这样,压缩不会消耗您的PHP应用程序中的内存。
您可以在Web服务器/PHP级别上启用gzip并跳过PHP脚本中的压缩。然后,只需要在调用readfile()
之间输出正确的zip文件头。