我一直在尝试找出在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"
但是我收到以下错误消息:
ERROR
无法部署应用程序版本。
ERROR 有些实例没有响应命令。没有收到[i-a5417ed4]的答复。
我可以用配置文件做任何事情吗?如何在不引入单点故障的情况下在AWS EB中完成此工作?
谢谢。
答案 0 :(得分:0)
您可以考虑使用像IronWorker这样的服务 - 这是专为您要做的事情而设计的,并且可能比将您自己的解决方案放在微型实例上更好。
我还没有使用Iron.io,但正在评估它,因为我希望将我的东西转移到AWS,所以我需要处理cron作业。
答案 1 :(得分:0)
你看过Fat Controller了吗?它可以保护任何东西。网站上有文档和示例:http://fat-controller.sourceforge.net