我一直在尝试找出在 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 中进行这项工作?
谢谢你。