私は以前、Gearman とスーパーバイザーを使用してジョブを管理していました。
この場合、Amazon SQS を使用しています。
画像処理サーバーとして使用するために、メイン Web サーバーとは別のマイクロ インスタンスをセットアップしました (現時点では純粋にテスト用です。この実装が稼働する前に、アップグレードしてクラスターの一部になる予定です)。
このマイクロ インスタンスには、画像処理を実行するために PHP と ImageMagick をインストールしました。
また、Amazon SQS からメッセージを受け取るワーカー スクリプトも作成しました。
すべてが完全に機能しますが、メッセージを継続的にチェックするには、このスクリプトを何度も実行する必要があります。
私は連続ループを実行するという考えが好きではないので、他の方法を検討し始めましたが、ほとんど成功していません。
だから私の質問は、これを行うためのベストプラクティスの方法と一般的に考えられているものは何ですか?
PHP は実際にはこのように設計されていないため、メモリが心配です。そのため、スクリプトをしばらく実行してから、停止して再起動するのが最善の策かもしれません。
スーパーバイザーを使用した経験があり (ギアマン ワーカーが実行され続けていることを確認するため)、単純な php スクリプトを何度も継続的に実行するためにそれを使用できるかどうか疑問に思っていますか?
私の考えは次のとおりです。
- スクリプトが 20 秒間チェックするように SQS ロング ポーリングを設定します。
- このスクリプトを一度に約 1 時間実行し続けるには、20 秒のスリープで while ループを使用します。
- これをすべてスーパバイザに実行させます。時間になり、ループが完了したら、スクリプトを終了させます。
- その後、スーパーバイザーは自動的に再起動する必要があります
これは実行可能に聞こえますか?より良い方法はありますか?PHP で SQS メッセージを受信するためのベストプラクティスと一般的に考えられているものは何ですか?
前もって感謝します