利用微信的 jssdk 调用手机相机拍照上传,图片是保存在微信服务器上的且只能保存三天,所以需要通过微信提供的接口把微信服务器上的图片下载到自己的服务器.要用到 curl,问题是当使用的人很少的时候没问题,但是人一多就出现卡死的情况.报名的时候每个人都要上传 4 张图片,最后提交的时候同事把图片 curl 到本地.cuel 方面已经使用了 curl_multi 改进过的 rolling_curl,但是效果不是很好,有没有什么好的方向建议?
1
jswh 2017-06-15 13:29:07 +08:00
一开始的时候可以使用微信的地址。图片抓取任务不用实时做,放到队列里做。抓取之后把微信地址替换为本地地址。
|
2
loadinger 2017-06-15 13:37:55 +08:00
有个东西叫 mq.
|
3
juneszh 2017-06-15 13:42:26 +08:00
最省成本的操作就是把并发改成队列。另外业务逻辑不能优化?为什么一上传就要去下载?微信的链接都可以用 3 天
|
4
BOYPT 2017-06-15 13:45:18 +08:00
上 CDN 吧。七牛可以远程下载微信的图,我们项目用七牛存用户的头像。
|
5
2ME 2017-06-15 13:54:51 +08:00
队列 或者写个定时任务每次执行扫一遍微信的图片地址抓取下来执行 UPDATE
|
6
king2014 OP @juneszh 一上传就下载是因为有一个在 pc 端的后台,有人实时审核的.微信的图片链接是 wx:XXXX 只能在微信上显示,而且苹果和安卓图片链接形式还不是一样的.
|
8
king2014 OP @2ME 有想过,但是这边需要实时可以查看到图片,微信 jssdk 上传到微信服务器的图片地址只能在微信上预览,没办法在 pc 端预览
|
10
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}" />
|
11
jarlyyn 2017-06-15 15:50:39 +08:00
这么复杂为什么不直接 PO 到服务器上……
|
12
juneszh 2017-06-15 15:53:40 +08:00
你都能 curl 下载到图了,为什么会有 PC 端不能显示的道理?
|
13
king2014 OP @juneszh token 有时间现在 7200 秒就会更新掉的,而且 media_id 保存的图片只有三天.所以这样应该只能实现短时间查看
|
14
king2014 OP @juneszh 可以显示.我问的是 curl 在很多人一起的时候,会导致系统阻塞.我问了有没有办法优化下性能可以应付多并发的 curl
|
15
juneszh 2017-06-15 16:03:33 +08:00
@king2014 #13 只要你不把地址写死,7200 秒完全没有什么影响。3 天时间足够你避开高峰期慢慢在后台安排去下载
|