专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » amazon:使用 PHP 向 Amazon 分载多媒体内容和带宽 »正文

amazon:使用 PHP 向 Amazon 分载多媒体内容和带宽

来源: 发布时间:星期一, 2009年1月12日 浏览:30次 评论:0
  本文举例源代码或素材下载

  Web 2.0 出现带来了 Web 上多媒体普及Flikr 刚刚推出几个星期就有几百万张图片得到了它服务Web 1.0 邮票大小视频也已经被 Google Video 或 YouTube 上浏览器大小电影所取代但是这会让小型 PHP 应用开发人员如何适从呢?当您想要承载大量图像和巨大视频文件时会出现什么情况?您那个只需支付 9 美元托管帐号能提供所有必需空间和带宽么?为您提供托管服务公司 Internet 连接能满足通信流量要求么?可能不行

  幸运Amazon 找到了补救思路方法就是利用种全新客户级 Web 服务:远程存储只需花费很少费用您就可以在 Amazon 上托管和存储数十亿字节任何类型数据您可将该空间用来存储站点图像也可使用 Amazon 保存备份

  在本文中我将通过组 PHP 页面来使用 Amazon S3 托管多媒体文件尽管还不尽完善但 Amazon 还是通过提供几个上传和检索内容思路方法大大简化了该流程

  有关 Amazon S3 更多信息

  使用 Amazon S3 存储服务比较容易从 Amazon Web Services (AWS) 开始选择想要存储服务并单击 Subscribe在那儿设置付费机制 —— 通常使用信用卡 —— 也可以使用您用来在 Amazon 上购买书或 DVD 每上传或下载十亿字节数据Amazon 就会给您卡记次帐设置完存储以后您将会收到封电子邮件里面含有个链接通过该链接可以获得您帐户 ID 和密钥

  有两个关键概念您必须理解:桶(bucket)和对象个桶 就像硬盘上个目录个对象 就是个桶中个指定数据块可在其中存放任何您喜欢东西这也正是 Amazon 使用对象 而不使用文件 原因对于本例来说我将上传图像文件到 Amazon S3因此每个对象就相当于个文件

  Amazon S3 支持使用多种思路方法创建、编辑和删除桶以及其中对象如果偏好 SOAP您可以使用它或者如这里例子中那样采用 Representational State Transfer (REST) 协议使用 curl 命令行工具将 GET、PUT 和 DELETE 命令通过 HTTP 发送到 Amazon S3 服务器PUT 命令创建桶或对象DELETE 删除桶或对象GET 检索有关桶或来自对象数据信息

  对象可拥有几个级别访问控制就我们而言其中两种需要特别关注:私有(只有桶拥有者才能读取其内容)和公有可读(任何人都可以读取但不能修改其内容)我将使用公有可读选项以便使用 Amazon S3 来提供图像图像 URL 格式为:http://[bucketname].s3.amazonaws.com/[object] 或 http://s3.amazonaws.com/[bucketname]/[object] 在我这个图像上传应用例子中个上传图像 URL 将类似于:http://jherr_photos.s3.amazonaws.com/IMG_2912.jpg这种格式十分清晰易读

  举例应用

  我将要创建应用比较简单我会建个页面其中有用来接受文件表单然后将该页面提交到个上传页面上传页面将个内容为图像新对象添加到 Amazon S3 桶中此概念如图 1 所示

  图 1. 上传图像到 Amazon S3



  我将的看作是 Amazon S3 样例 HelloWorld 版它要多简单有多简单虽然我可以使用命令行脚本但在浏览器中查看它更有意思从本例您可以看到使用 Amazon S3 是多么容易

  缺陷

  本例表面上看起来很简单实际上 S3 类中包含了大量复杂处理大多数 Web 请求相对简单问题般都出在请求签名部分Amazon 需要使用个只有您知道密钥对每个请求进行签名而该签名过程十分不易处理也很难调试所幸S3 类隐藏了这些复杂性

  手边有了 S3 类签名过程就不是问题了但如果真遇到了问题为了解决它您常常需要系统地查阅文档和使用 Amazon 签名工具帮助这可能会花费您两个小时时间在那的后使用 Amazon S3 服务及其姊妹服务 —— Amazon Simple Queue Service (SQS) —— 就容易了

  Amazon S3 世界

  Amazon S3 只是位于个更大上下文中组服务的其他两个和 Amazon S3 特别相关服务是 Amazon SQS 及 Amazon Elastic Compute Cloud (EC2)

  Amazon SQS 可以通过指定队列让应用得以相互通信在该队列中应用根据各种事件(例如“添加个用户”、“请求报告”)插入消息其他应用读取并处理那些消息然后将其从队列中删除此功能和 TIBCO 提供服务类似可用于允许企业应用种松散方式进行耦合

  Amazon EC2 服务在写作本文时还处于测试阶段它允许以种随需应变方式使用 Amazon 服务器池计算功能您可以创建应用个 Amazon 机器镜像(Amazon Machine Image)然后将该镜像上传到 Amazon S3的后向 Amazon EC2 服务发出启动流程、停止流程和监控流程请求如果您已经编写应用来利用此功能定会惊讶于它所提供强大随需应变处理能力

  如果将所有 3种服务看作个包 —— 将 Amazon S3 用作磁盘、将 Amazon SQS 用作消息底板将 Amazon EC2 用作过程管理系统那么 Amazon 想要做什么就很清楚了Amazon 想要成为为小型和中型业务提供随需应变计算能力供应商到那时从 Amazon EC2 系统使用 Amazon S3 将会免费



  结束语

  Amazon S3 除了分载站点部分带宽以外还可用来做其他很多事情比如:

  备份 使用 Amazon S3 存储数据库夜间备份Amazon S3Curl 命令行脚本可很容易地用来进行此类处理 共享存储 您不再需要使用 USB 驱动器而是可以创建个 Amazon S3 文件夹然后使用工具比如 Jungle Disk(它将 Amazon S3 像硬盘样挂载)创建文件共享存储库的后您就可在自己计算机间或自己和组员的间使用此存储库您甚至可在自己和远程 Web 服务器的间使用它 小型 Web 站点 通过将 HTML 和图像上传到 Amazon S3您只需花很少费用就可在 Amazon S3 上托管静态小型 Web 站点 播客、视频博客或图像博客 使用 Amazon S3可上传播客媒体文件及 RSS V2.0 XML 并可直接在 Amazon S3 上运行播客   越使用 Amazon S3我就越喜欢它界面简单系统可靠更好价格可以承受尝试下 Amazon S3 看看是否可在自己 Web 应用中使用它



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: