Я пытался найти лучший способ запуска фоновых заданий с использованием PHP на AWS Elastic beanstalk, и после многих часов поиска в Google и SO я считаю, что одним из хороших решений является использование SWF и рабочих операций.
Я нашел этот пример в aws-sdk-for-php: https://github.com/amazonwebservices/aws-sdk-for-php/tree/master/_samples/AmazonSimpleWorkflow/cron
В файле readme говорится:
Чтобы запустить этот пример, вам нужно выполнить три скрипта из командной строки в отдельных окнах терминала/консоли.
а также
Обратите внимание, что скрипт 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, не создавая единой точки отказа?
Спасибо.