PHP 使用 curl 下载微信服务器端图片使用人数一多的时候性能优化问题?

2017-06-15 13:15:45 +08:00
 king2014

利用微信的 jssdk 调用手机相机拍照上传,图片是保存在微信服务器上的且只能保存三天,所以需要通过微信提供的接口把微信服务器上的图片下载到自己的服务器.要用到 curl,问题是当使用的人很少的时候没问题,但是人一多就出现卡死的情况.报名的时候每个人都要上传 4 张图片,最后提交的时候同事把图片 curl 到本地.cuel 方面已经使用了 curl_multi 改进过的 rolling_curl,但是效果不是很好,有没有什么好的方向建议?

1988 次点击
所在节点    PHP
18 条回复
jswh
2017-06-15 13:29:07 +08:00
一开始的时候可以使用微信的地址。图片抓取任务不用实时做,放到队列里做。抓取之后把微信地址替换为本地地址。
loadinger
2017-06-15 13:37:55 +08:00
有个东西叫 mq.
juneszh
2017-06-15 13:42:26 +08:00
最省成本的操作就是把并发改成队列。另外业务逻辑不能优化?为什么一上传就要去下载?微信的链接都可以用 3 天
BOYPT
2017-06-15 13:45:18 +08:00
上 CDN 吧。七牛可以远程下载微信的图,我们项目用七牛存用户的头像。
2ME
2017-06-15 13:54:51 +08:00
队列 或者写个定时任务每次执行扫一遍微信的图片地址抓取下来执行 UPDATE
king2014
2017-06-15 15:31:34 +08:00
@juneszh 一上传就下载是因为有一个在 pc 端的后台,有人实时审核的.微信的图片链接是 wx:XXXX 只能在微信上显示,而且苹果和安卓图片链接形式还不是一样的.
king2014
2017-06-15 15:32:00 +08:00
@jswh 后台在 pc 端,用微信地址没办法显示出来
king2014
2017-06-15 15:32:54 +08:00
@2ME 有想过,但是这边需要实时可以查看到图片,微信 jssdk 上传到微信服务器的图片地址只能在微信上预览,没办法在 pc 端预览
king2014
2017-06-15 15:33:12 +08:00
@loadinger 我去看看 mq 是什么
juneszh
2017-06-15 15:48:32 +08:00
@king2014 #6 不是很理解,如果只是后台审核用,直接用你 curl 下载的图片地址作为显示不就可以了?<image src="http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$token}&media_id={$media}" />
jarlyyn
2017-06-15 15:50:39 +08:00
这么复杂为什么不直接 PO 到服务器上……
juneszh
2017-06-15 15:53:40 +08:00
你都能 curl 下载到图了,为什么会有 PC 端不能显示的道理?
king2014
2017-06-15 15:59:49 +08:00
@juneszh token 有时间现在 7200 秒就会更新掉的,而且 media_id 保存的图片只有三天.所以这样应该只能实现短时间查看
king2014
2017-06-15 16:01:08 +08:00
@juneszh 可以显示.我问的是 curl 在很多人一起的时候,会导致系统阻塞.我问了有没有办法优化下性能可以应付多并发的 curl
juneszh
2017-06-15 16:03:33 +08:00
@king2014 #13 只要你不把地址写死,7200 秒完全没有什么影响。3 天时间足够你避开高峰期慢慢在后台安排去下载
king2014
2017-06-15 16:03:34 +08:00
@jarlyyn 一个小项目.逻辑不复杂,微信那边端口也写的很清楚,只不过调用上传接口我们这边下载到自己的服务器.现在问题同时使用人一上来就会很卡
king2014
2017-06-15 16:05:17 +08:00
@juneszh 有道理,我去实现看看.谢谢你
jarlyyn
2017-06-15 16:20:07 +08:00
@king2014
1.token 进缓存啊……
2.要并发么做队列。
3.除非带宽有问题,完全可以 canvas.js 调整图片后,PO 一个 base64 过来啊……

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

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

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

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

© 2021 V2EX