PHP 高并发大图片上传怎么架构

2019-05-07 14:39:05 +08:00
 zhengwhizz

有个网站有时会涉及几百号人同时上传 2M 左右的图片好多张,这种情况下经常会丢失图片,怎么处理好呢?

6406 次点击
所在节点    PHP
50 条回复
sujin190
2019-05-07 14:50:36 +08:00
用又拍或者七牛
HanSonJ
2019-05-07 15:10:03 +08:00
前端上传
itchihuo
2019-05-07 15:10:41 +08:00
1 楼正解,直接前端上传云存储平台
tanszhe
2019-05-07 15:26:34 +08:00
关键在带宽
DefineJ
2019-05-07 15:32:51 +08:00
一定要自己的服务器搞个队列也行
keepeye
2019-05-07 15:36:04 +08:00
我觉得还是先搞清楚为什么会丢失图片比较好
googlecomhk
2019-05-07 15:37:52 +08:00
feiandxs
2019-05-07 15:39:32 +08:00
我觉得这里搞清思路找到问题所在就好,但这个场景下造轮子真的是最没有必要的。。

1 效果没前端直传第三方好。
2 造一遍也是各种封装,还涉及 token 鉴权之类的,开发成本高。
3 你造出来也没人家好,从业务角度来说就不该考虑。
4 也不用担心第三方平台倒闭之类的。。。带宽足,成本低,一般倒的比别家公司还晚。。。

就知识可以学学,自己再试图强行搞定高并发下的图片上传,又费钱又费人还学不到啥。。。
cnbattle
2019-05-07 16:39:20 +08:00
同 1 楼 直接往第三方上面怼
zhengwhizz
2019-05-07 20:13:43 +08:00
@sujin190
@itchihuo
@cnbattle 项目涉及到使用这些图片生成 PDF 还有打包下载,很多地方用到这些图片,怼云存储要调整好多地方,甲方不加资金没得搞,现在我就想弄清楚,如果在自己服怎么搞能避免丢失
zhengwhizz
2019-05-07 20:17:57 +08:00
@keepeye 丢图应该就是处理不过来挂了,反正很怪异,没任何规律,重名也不可能,重名覆盖的话数据库有记录至少会破图,上传的时候 3-4 天有 40G 的量,时间点上来说还相对集中。
plqws
2019-05-07 20:21:40 +08:00
几百人同时上传 2M 的图片并不是什么大压力的场景啊,难道不是代码逻辑有问题吗
zhengwhizz
2019-05-07 20:39:17 +08:00
@plqws 问题服务器只有 4M 带宽,并且上传的时候每个人都是一批的传,同时有对图片生成缩略图的操作,并且有些还有水印操作,也就是每个人估算会传十几二十张甚至更多,虽然并发时不一定有几百人,从以往的数据量来看,3 天左右 40G 的量,时间也相对集中。
zhengwhizz
2019-05-07 20:41:03 +08:00
@plqws 有没有什么方法检测到当时的并发量?或者图片上传请求量?
ouou8
2019-05-07 21:01:28 +08:00
@zhengwhizz 暂时没有办法解决的情况下,你先限制一下每人一次只能上传图片的数量,比如一次最多只能上传 20 张,甚至更少一些。
mamahaha
2019-05-07 21:01:48 +08:00
你介四传的太慢超时了啊,ini 里可以调节一下,要想可靠就做队列或断点续传,断点续传的工具很多的一搜一堆。
server
2019-05-07 21:08:52 +08:00
临时授权,不过低版本 ie 不行, https://help.aliyun.com/document_detail/31953.html
zhengwhizz
2019-05-07 21:12:56 +08:00
@mamahaha 接收代码里直接设置 0 的,
zhengwhizz
2019-05-07 21:14:47 +08:00
@ouou8 客户不让限,而且也不让压,本来可以客户端压一下,但是客户看图片质量就看 KB 数。
dobelee
2019-05-07 21:15:54 +08:00
几百个人同时上传 2m 图片,带宽只有 4m。
这个背景下讨论架构有意义?

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

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

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

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

© 2021 V2EX