1

S3Client->copyObject()我正在尝试使用AWS PHP SDK v2 中的操作在位于不同区域的存储桶之间复制 Amazon S3 中的大型对象。

对象复制确实有效,但问题是复制操作可能需要相当长的时间才能返回响应,并且它会阻止 PHP 脚本的执行,这不是我在这种特殊情况下想要的。

有什么方法可以copyObject()通过 SDK 以非阻塞方式进行调用(可能使用一些较低级别的 Guzzle 设置)?我需要这种非阻塞行为,因为我必须将定期运行状况检查发送到另一项服务 (Amazon SWF) 以让它知道我的脚本仍在运行。

如果无法以非阻塞方式执行调用,我知道还有其他可能的解决方案,但我希望从具有更多 SDK 经验的人那里获得更多想法。

(我认为我可以采取的一种可能的方法是处理并在子进程fork()中执行copyObject()操作;此外,如果 Guzzle 支持某种进度回调并且它确保回调方法至少在每个分钟)

4

1 回答 1

0

为此,您需要创建一些将在后台运行的进程。

您可以为此使用亚马逊队列服务。

检查此链接 - http://aws.amazon.com/sqs/

解决方案 1-您只需向队列服务提供作业,它将在后台执行您的任务,因此您的 PHP 脚本无需等待。

解决方案 2-还有另一种方法是让您的 PHP cron 作业在每分钟或 5 分钟后执行。您可以将任务存储在数据库中,您的 cron 将从 DB 访问任务并执行它。 它是如何工作的你只需要将你的任务转储到数据库中并返回。然后你的 cron 将从数据库中读取并在后台执行它。

于 2014-10-28T06:48:00.060 回答