Gearmanは初めてですが、一般的な概念は理解しています。これはあなたが通常やりたいことではないことを私は理解しています...しかし、私はすべての労働者に「仕事」を送る方法があるかどうか疑問に思いましたか?
ワーカーを監視し、ワーカーが死んだときにリスポーンするスクリプトがあります。すべてのワーカープロセスを強制終了/リスポーンしたいときに、「死ぬ」というジョブを送信できるようにしたいと思います。
これは可能ですか?ありがとう!
これについては、いくつかの方法があります。
最も簡単な方法は、あなたが持っているすべての労働者に「殺す」仕事を送ることです。それらがすべて殺されたら、それらをリスポーンします。この方法の欠点は、リスポーンを開始する前に、すべてのワーカーが死ぬまで待たなければならないことです。既存のスクリプトがすぐにリスポーンする場合は、ここで問題が発生します。
もう1つの方法は、ワーカーごとに固有のタスクを登録することです。たとえば、2人のワーカーがある場合、最初のワーカーにタスク「kill_001」を登録し、2番目のワーカーに「kill_002」を登録します。ワーカーを殺すには、開始する一意のジョブ( "kill_001"、 "kill_002")を決定してから、それらを送信します。復活したワーカーには、新しい固有のタスクが必要です。つまり、まだ殺されていない場合は、新しいジョブ「kill_001」を登録しないでください。この方法ではもう少し作業が必要になる場合がありますが、ダウンタイムなしでワーカーを再生成できます。