2017-03-24 19 views
0

同じサーバー上で2つのアプリケーションを実行しています。 スケジューラジョブにwithoutOverlapping()を追加し、cron自体でベースのcronジョブを管理しているようですが、これらの2つのアプリケーションは互いに実行をブロックしています。 それはありますか?Laravel Scheduler(withoutOverlapping)

答えて

1

はい、withoutOverlappingはアプリケーションごとに動作します。

Laravelは、ジョブのハッシュでストレージフォルダにファイルを作成します。この方法で、ファイルが存在する場合、Laravelはジョブがまだ実行中であることを認識します。一方のアプリケーションは、他方のアプリケーションの記憶域フォルダにアクセスできないため、他方のアプリケーションが現在ジョブを実行しているかどうかを知ることはできません。

+0

コメントをいただきありがとうございますが、私が経験したことは、あなたが説明した反対です。 私は、キューの仕事のためのスケジューラと両方のアプリを持っている場合、1つのアプリが他のアプリケーションの実行をブロックしているようです。 – suddenbreak

0

あなたのコードは次のよう

$schedule->command('process:queue 0')->everyMinute()->withoutOverlapping(); 
$schedule->command('process:queue 1')->everyMinute()->withoutOverlapping(); 

のように見える場合は、異なるパラメータを持つ同じコマンドは、BCの重なりと考えかもしれないからです。

I.e.ジョブのハッシュはコマンドシグネチャのみを考慮します。