admin 发表于 2016-11-28 14:36:48

阿里云OSS整合杂谈

考虑到阿里云OSS的价格实惠 性能优秀打算把后期项目都适用OSS 但在使用中遇到很多问题 记下来希望对后人有所帮助

1:首先考虑的安卓端自然用他的SDK 也整合成功了 但是貌似不能多图上传 考虑到是否用PHP更好 不管安卓IOS都统一在PHP处理

2:之后换成了PHP单图上传很成功 但是多余上传遇到一个奇怪问题的 我这类使用的是THINKPHP的上传类


[*]$info =$upload->getUploadFileInfo();
[*]在上传成功后迭代$info 但遇到奇怪问题
A:上传图片一张变两张
明明只有上传2张图片 但是本地也好OSS上也好都是4张 看了图片是重复上传了一遍


这个时候考虑是不是我安卓端POST过去是不是问题 经过排除各种问题 发现正常 这个时候把foreach迭代中的上传阿里云代码拿掉却正常 百思不得其解 正常执行到以上代码这个位置 应该本地都已经保存好了 为什么本地会出现重复一张 问了阿里云客户也没什么有用的问题 后来也没有在试验

B:上传图片超时
另外这里还有一个问题就是图片一大 ,就会出现超时
这个问题后来想想可能是服务器关系我的服务器只有1M带宽 从服务器上传到阿里云OSS是用的服务器上行带宽 1M上行100K左右 如果图片大了比如500K一张 2张就是1M 有可能超时

3:既然PHP服务端不行 又不打算上传单图 后来想想好是从安卓端解决(另外也考虑一个问题PHP上行到OSS 如果上传人一多会导致带宽被占用 毕竟是上行带宽 对服务器来说很宝贵)

最后虽然不完美也算解决 思路以下两个 我个人选择A

A:选择图片后直接异步上传 删除的时候同时删除OSS图片 由于OSS速度快客户也感觉不到任何延迟什么 然后发布的时候把Oss图片集合统一保存到数据库就可以了
B: 选择图片的时候不上传 等选择所有图片后统一异步上传 不过这种情况网络不好或则图片很多比如10多张 图片偶热可能会出现丢失 (本人测试正常 9 张图片没遇到过丢失)



admin 发表于 2016-11-29 17:06:01

今天无意中了解了PHP那个原因 因为今天遇到融云服务器有点卡获取TOKEN慢导致注册两次后来发现是Volley超时时间太短 好像是2秒 这样就导致安卓端重复发送了请求 上面也问题也是这个原因 :)
stringRequest.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, 1.0f));
[*]1.DefaultRetryPolicy实现于RetryPolicy,RetryPolicy是一个接口;
[*]2.DefaultRetryPolicy构造函数中的参数1是设置超时时长,默认为2500,可以设置稍微长点;
[*]3.DefaultRetryPolicy构造函数中的参数2是设置最大重复请求次数,默认为1,可以设置为0;
[*]4.DefaultRetryPolicy构造函数中的参数3为设置 “允许你指定一个退避乘数可以用来 实现<指数退
避>来从RESTful服务器请求数据”,默认值为1,当取1时,即可以简单理解为 ” 每次超时请求时长都是 <前一次超时请求时长 *2> “,以此类推

页: [1]
查看完整版本: 阿里云OSS整合杂谈