1

ロードバランサの背後にある複数のWebサーバーを実行しているLaravel 5.0があります。私はlaravel Schedulerを使用して、定期的にコマンドを実行して実行します。これらのほとんどはサーバー固有のコマンドではなく、グローバル(すべてのサーバーのアプリ全体にわたって)です。Synchonise Laravel複数のサーバーにわたるタスクスケジューラ

問題は、各サーバーが各コマンドを実行することです.3台のサーバーは3つのコマンドが毎時1分毎に実行されることを意味します。

これらのコマンドの実行をサーバ間で同期させるにはどうすればよいですか?ララベルにはネイティブオプションがありますか?他のパッケージをお勧めしますか?

考えられるのは、ファイルベースのミューテックスを使用してLaravelがそのwithoutOverlapping機能を実装する方法に依存し、共有ストレージを使用してサーバー間でファイルを配布することでした。うまくいくかもしれませんが、共有ストレージがこれを打ち破ってしまうほどの遅延はありません。

私の現在の回避策は、コマンドをキューにジョブを起動させ、DBを使用してサーバー間で自身を同期させるためにジョブハンドラ自体にロジックを構築することです。ほとんどエレガントですが、仕事は終わりです。

これはLaravel Task Scheduler across multiple servers without overlap

+0

重複のない複数のサーバーにわたる[Laravel Task Scheduler]の重複の可能性あり(http://stackoverflow.com/questions/33485478/laravel-task-scheduler-across-multiple-servers-without-overlap) –

答えて

0

に関連しているあなたは、このjdavidbakr/multi-server-event packageを試みたことがありますか? このパッケージは、複数のサーバー構成のイベントを管理するため、1台のサーバーのみがスケジュールされたイベントを発生させます。

関連する問題