PHP 打包几个 G,甚至 10 几个 G 的 zip 包

2019-06-11 18:40:46 +08:00
 zhengwhizz

从 阿里云 oss 打包十几 G 的 zip 包供下载,目前用的 flysystem zip ,发现都是在 3.6G 左右就打完,丢失了好多文件。请问有什么好方法避免内存不足?另外下载又有什么好方案,目前是打包到服务器 xsendfile 下载,但是服务器带宽有限,也不能断点续传,想着打包完后回传 oss 再下载,但是好像也不能断点吧?

5762 次点击
所在节点    PHP
24 条回复
vibbow
2019-06-11 19:17:49 +08:00
直接系统命令调用 7z 进行打包
zhengwhizz
2019-06-11 20:03:46 +08:00
@vibbow 能打包 oss 上的网络文件?几十万个文件的
KasuganoSoras
2019-06-11 20:09:16 +08:00
修改 php.ini
把 max_execution_time 参数调大一点
把 memory_limit 调大一点
最好用异步执行,或者命令行运行

另外你说你服务器带宽有限,那打包完了回传到 OSS 和直接给用户下载有啥区别啊……(挠头
最好是打包完了以后存到一个临时目录,然后让用户下载这个临时文件
因为有 Nginx 或者 Apache 去处理静态文件下载,就支持断点续传了
KasuganoSoras
2019-06-11 20:11:58 +08:00
最好就是搞个水管粗点的服务器,像国外便宜的 G 口服务器一大把,你只需要把下载文件这部分代码单独拎出来丢到下载服务器上去进行处理就好了,打包完了直接下载,不用搞什么回传 OSS。
zhengwhizz
2019-06-11 20:15:57 +08:00
@KasuganoSoras oss 和 web 服务器是阿里同一区域内网的。目前最大一个打包估计 15 个 G。。调参数之前就调了。现在下载的就是静态文件形式的。
runtu2019
2019-06-11 20:31:18 +08:00
阿里云提供了那么多 oss 工具不知道用,不知道怎么说你了
先开通 ram 子账号,在下载 ossutil 工具或则其他 oss 工具,用 oss 外网地址进行连接
丢在那下一个晚上不就好了,直接下载到本地,oss 按量付费,外网带宽费也不要太多钱吧
0myun
2019-06-11 20:43:08 +08:00
@KasuganoSoras #4 “,像国外便宜的 G 口服务器一大把,”?推荐推荐呗
jimrok
2019-06-11 20:49:26 +08:00
有个 ossutil64 的命令,可以拷贝 oss 里的文件,你一个个目录拷贝,蚂蚁搬家如何?
wslsq
2019-06-11 22:11:55 +08:00
队列执行命令运行吧
zwl2012
2019-06-11 23:36:34 +08:00
不是可以调用 shell 管道压缩传送吗
zwl2012
2019-06-11 23:37:01 +08:00
管道压缩占用的内存应该还行吧
zwl2012
2019-06-11 23:37:11 +08:00
虽然压缩比一般
KasuganoSoras
2019-06-11 23:46:28 +08:00
@0myun #7 dedipath, nocix, onevps 这几个都是我常用的,搜一下名字就有,网上评测都很详细了
KasuganoSoras
2019-06-11 23:50:00 +08:00
@0myun #7 另外你的账号可能被降权了,你回复我没提醒,我刚刚点进来看才发现
chinesestudio
2019-06-12 01:58:30 +08:00
tar 有啥不好么
also24
2019-06-12 02:02:28 +08:00
同问,为什么要用 zip,这种场景似乎更应该用 tar
game69010
2019-06-12 08:07:33 +08:00
开临时服务器下载就不会占用自己服务器资源,可以临时买个配置高点的,宽带 5m,一两元不到的成本就可以搞定了
zhengwhizz
2019-06-12 11:52:15 +08:00
@chinesestudio
@also24 怎么用 tar 打包 网络上的文件,并且打包时按一定的文件夹命名? 如 北京 /朝阳 /100/aaa.jpg
also24
2019-06-12 11:58:15 +08:00
@zhengwhizz #18
还是要下载下来打包进去,推荐 tar 的原因主要有两个:
1、tar 可以增补文件,也就是说你可以一个一个文件下载下来加进去,减少磁盘 /内存占用
2、tar 是归档格式,只打包不压缩,减少 CPU/内存占用,提升打包速度
Jeffrey4l
2019-06-12 16:11:46 +08:00
试试 zsync?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX