GSUtil与PHP RESTful类比较
大家都知道,使用S3(亚马逊的存储服务)很麻烦:如果想删除一个虚拟目录,就得先把里面的所有文件都删掉。这种情况在使用RESTful API时尤其明显。
我在想,如果我用PHP去调用GSUtil(谷歌的存储工具),而不是自己写一个PHP类,性能会不会有所提升?GSUtil处理请求的方式有什么特别之处,还是说它和普通的REST接口没什么区别呢?
我遇到的主要问题有:
- 删除大文件夹
- 上传很多小文件
- 读取分层数据的步骤(比如,只想看
/foo
路径下的文件和文件夹,而不想看到它们的子文件夹和文件)
1 个回答
2
从根本上来说,你的PHP代码和gsutil都在使用一种叫做RESTful的接口(其实gsutil是建立在一个叫boto的开源Python库之上,这个库实现了大部分的REST接口)。不过,有几个理由让你考虑使用gsutil:
- Gsutil会帮你处理OAuth 2.0的认证和授权,这样你就不用自己去搞这些复杂的东西了。
- Gsutil支持通配符扩展,比如你只需要简单地输入'gsutil rm gs://bucket/*'就能删除一个存储桶里的所有对象。
- Gsutil还有很多其他功能(比如获取/设置访问控制列表、解析和构建XML、列出存储桶内容、查看对象内容等等),如果你不使用gsutil,这些功能你都得自己实现,或者在其他PHP库里找。
- Gsutil在“上传很多小文件”的场景下表现得很好。特别是,使用-m选项可以让你的上传同时进行,这样能大大提高上传速度。
总之,你可以自己写PHP代码,但我觉得如果你使用gsutil,会更快完成工作,并且能用到更多的功能。