5

AWS Elastic Beanstalk で PHP を使用してバックグラウンド ジョブを実行する最良の方法を見つけようとしてきました。Google と SO で何時間も検索した結果、SWF とアクティビティ ワーカーを使用することが 1 つの良い解決策であると考えています。

この例が aws-sdk-for-php に埋もれているのを見つけました: https://github.com/amazonwebservices/aws-sdk-for-php/tree/master/_samples/AmazonSimpleWorkflow/cron

read-me ファイルには次のように書かれています。

このサンプルを実行するには、別のターミナル/コンソール ウィンドウでコマンド ラインから 3 つのスクリプトを実行する必要があります。

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

IronWorkerのようなサービスの使用を検討することもできます。これは、目的に合わせて特別に設計されており、マイクロ インスタンスに独自のソリューションをまとめるよりもうまく機能するでしょう。

私はまだIron.ioを使用していませんが、自分のものを AWS に移行することを検討しているため、cron ジョブも処理する必要があるため、評価していました。

于 2013-01-29T01:57:26.343 に答える
0

Fat Controllerをご覧になりましたか? 何でもデーモン化できます。Web サイトにドキュメントと例があります: http://fat-controller.sourceforge.net

于 2013-08-27T08:02:33.427 に答える