大家好,我是一名PHP开发者,叫温育坤。
刚刚在论坛里看的时候,无意中发现很多站长朋友都想使用OSS但无从入手,现在我分享一下我的操作经验(仅有思路,不含代码)。
OSS的好处我就不多说了,从决定采用OSS说起。
决定采用OSS之后我们需要考虑两个问题:
第一、需不需要大规模修改网站的源代码。
第二、用OSS会不会增加访客上传图片其他附件的响应时间。
第三、万一以后不用OSS能不能切换回来。
第一个问题,我们希望答案是:不需要。
第二个问题,我们希望答案是:不会。
第三个问题,我们希望答案是:能。
确定了方向后,怎么实现呢?
答案是异步同步附件到OSS。
第一步:在数据库里建一个本地附件地址与OSS地址一一对应的表(下称 OSS对应表)。
参考结构:
id 编号 INT 自加
tablename 附件本地地址所在表名
tableid 附件本地地址所在表对应的ID
tablekey 附件本地地址所在表对应的字段名
localaddress 附件本地地址
ossaddress 附件OSS地址
update 是否更新 1 是 0 否
updatetime 更新时间 unix时间
第二步:遍历本地数据库用正则表达式匹配附件并保存到OSS对应表中。注:这里第一次是要遍历完本地,在每日的更新中,为节省服务器资源,应该只遍历有可能更新的表。
第三步:利用DNSPOD的D监控等类似的定期访问网站服务,异步将附件更新到OSS中。
参考做法:
第一步:新建一个二级站点,做为监控对像,并绑定一个子域名。
第二步:开发相关的同步程序。
程序思路:
1、检测是否有没有更新的记录。
2、如果有,把附件更新到OSS中,并修改本地数据库中相应的记录,建议每次更新几个附件即可,并且在凌晨的时候更新。
注,为了以后可以更容易还原到不需要OSS状态中,建议本地地址除第一个目录地址外其他地址保存一致。
如:
本地地址是:/uploads/image/2015/0324/附件名
OSS地址应是:oss域名/uploads_oss/image/2015/0324/附件名
这样以后换回不需要OSS只需要将数据库中的“http://oss.域名/uploads_oss/”换成“/uploads/”就可以了。
3、如果没有,遍历有可能有新建本地附件的表,将附件记录更新到OSS对应表中。
这样做我们三个问题都顺利解决了。
同步附件到OSS的相关工作是完全独立于网站的,不修改网站本身的任何源代码,访客上传附件也是上传到本地,并没有增加上传开支。同时还可以两地备份,保证 以后可以切换回来的可操作性。
这个思路有一定缺陷:当天的附件会到凌晨才更新到OSS中,当天附件的访问还是会占用到网站服务器的带宽。
希望对大家有帮助,同时希望有朋友开发个万用版的同步程序,分享给大家,或者大家可以回复,如果需要的人很多,我也可以开发个分享出来。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。