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