PHP实现大量数据的后端压缩与打包下载

遇到了一个需要打包下载图片的需求.图片的规模应该在x10的5次方左右,整体体积应该在数GB.如果直接先压缩,然后返回一个地址让客户端去下载,中间必定会出现一个很长时间的一个操作空白期,同时还无法保证这个空白期用户会不会关掉连接.所以考虑使用一遍压缩一遍下载的方案(流式下载),虽然牺牲掉了显示进度的功能,但是至少不会出现一个很长时间的空白时间段.

类似的功能例如phpmyadmin的导出(这个没有压缩,我已经能实现了),GitHub的仓库的打包下载(确定有压缩,考虑到他在下载的时候也不知道最终体积,所以考虑是实现了流式压缩下载)

网上搜过一些相关的资料,不过大多都是先压缩后下载的方案,在大数据量下估计是没法用.

想问一下有没有哪位大佬做过类似功能,能帮忙讲解一下算法或者提供几个关键词好让我去搜索一波.

目前使用的关键词:php zip 流式 下载 压缩

阅读 2.9k
2 个回答

已经解决了,用的是从PHPmyadmin中抠出来的一个叫ZipFile的类。

有个问题,你的下载是很多人一起下载吗?还是只有几个人?
很多人的情况下,你这个方法会出问题的:
每个用户下载会占用一个进程,你同时下载的用户有多少?你又给PHP-fpm开了几个进程?如果进程跑满了,其他人这时候都只能等待

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题