5

我一直在尝试找出在 AWS Elastic beanstalk 上使用 PHP 运行后台作业的最佳方法,并且在 Google 和 SO 上搜索了数小时后,我相信一个好的解决方案是使用 SWF 和活动工作者。

我发现这个例子隐藏在 aws-sdk-for-php 中:https ://github.com/amazonwebservices/aws-sdk-for-php/tree/master/_samples/AmazonSimpleWorkflow/cron

自述文件说:

要运行此示例,您需要在单独的终端/控制台窗口中从命令行执行三个脚本

请注意,start_cron_example_workflow.php 脚本将快速退出,而决策者和活动工作者脚本将继续运行,直到您手动终止它们。

决策者和活动工作者将“永远”循环,尝试在 EB 中运行这些是我遇到的麻烦。

在我的 .ebextensions 目录中,我有一个执行这些文件的文件:

container_commands:
  01background_task: 
    command: "php -f start_cron_example_activity_workers.php"
  02background_task: 
    command: "php -f start_cron_example_workflow_workers.php"

但我收到以下错误消息:

错误
无法部署应用程序版本。

错误 某些实例没有响应命令。未收到来自 [i-a5417ed4] 的回复。

有什么办法可以使用配置文件来做到这一点?如何在不引入单点故障的情况下在 AWS EB 中进行这项工作?

谢谢你。

4

2 回答 2

0

你看过胖控制器吗?它可以守护任何东西。网站上有文档和示例:http: //fat-controller.sourceforge.net

于 2013-08-27T08:02:33.427 回答
0

您可能会考虑使用IronWorker 之类的服务——这是专为您正在尝试做的事情而设计的,并且可能比将您自己的解决方案放在一个微型实例上更好。

我还没有使用Iron.io,但是我正在评估它,因为我希望将我的东西转移到 AWS,所以我还需要处理 cron 作业。

于 2013-01-29T01:57:26.343 回答