【发布时间】:2014-10-08 13:24:57
【问题描述】:
我正在尝试使用 AWS PHP SDK v2 中的 S3Client->copyObject() 操作在位于不同区域的存储桶之间复制 Amazon S3 中的大型对象。
对象复制确实有效,但问题是复制操作可能需要相当长的时间才能返回响应,并且它会阻止 PHP 脚本的执行,这不是我在这种特殊情况下想要的。
有什么方法可以通过 SDK 以非阻塞方式调用 copyObject()(可能使用一些较低级别的 Guzzle 设置)?我需要这种非阻塞行为,因为我必须将定期运行状况检查发送到另一项服务 (Amazon SWF) 以让它知道我的脚本仍在运行。
如果无法以非阻塞方式执行调用,我知道还有其他可能的解决方案,但我希望从具有更多 SDK 经验的人那里获得更多想法。
(我认为我可以采取的一种可能的方法是fork() 进程并在子进程中执行copyObject() 操作;此外,如果 Guzzle 支持并且它确保某种进度回调也可以工作回调方法至少每分钟执行一次)
【问题讨论】:
-
不确定如何使用 copyObject,而不能使用 copyObject() 指定区域。你能分享一下你是怎么做的代码吗?
-
见this official doc page。据我记得,您需要将请求发送到与目标存储桶对应的端点。
-
那里看不到任何对区域的引用。
-
一个bucket永远属于一个region。指定源和目标存储桶有效地指定源和目标区域。
标签: php amazon-s3 guzzle aws-php-sdk