有一个项目,每个用户都可以下载一个包含大约2GB数据的zip ...
唯一的问题是,每个用户都有一些非常小的文件必须更改。
有没有一种优雅的方法来解决这个问题,除了不要求所有这些都在拉链中?我考虑过的想法:
1)将待处理订单推送到队列,并在资源可用时处理该队列...处理意味着为每个订单创建一个新zip,然后在N天后删除
2)以某种方式在PHP中操作zip,然后通过原始类型的推送(即吐出标题,然后根据文件+自定义文件生成数据)
我可能遇到的有关最佳方法或内存问题的任何想法?谢谢!
答案 0 :(得分:2)
ZIP文件结构基本上是:
这意味着您应该能够即时构建和输出ZIP存档,只需要将目录数据保留在内存中,直到最后将其写出来。 ZIP存档本身永远不需要存在于磁盘上。
如果使用这种方法,在同时向多个客户端提供ZIP文件时不会出现并发问题,并且在构建存档时不必使用任何磁盘空间。
答案 1 :(得分:0)
IMHO
你可以考虑两种zip文件方法
答案 2 :(得分:0)
你看过PHP的zip扩展吗? http://php.net/zip
据我所见,您可以以OOP方式动态操作ZIP存档。我只是不确定性能,可能是2GB拉链可能需要一些时间来操作,但你必须亲自尝试。