1

私は、Gearmanを使用してMySQLテーブルからジョブを処理し、ジョブが2回取得されないようにjobs_queueそれらの状態をマークすることを検討しています(これは現在発生しています)。locked

質問:上記のシナリオでは、ジョブが完了するまでに10秒かかる場合があり、新しいジョブが2秒ごとに処理を開始するようにします(何らかの形式のレート制限を実現するため)。現在、テーブルからジョブを取得するサーバーも、ジョブを処理しているのと同じマシンです。

説明されているように、ギアマンはジョブキューイングを行うのに適していますか?クライアントは、それ自体で実行されるジョブを作成します(同じマシン上の複数のワーカー)。

4

1 に答える 1

2

はい、そうですが、MySQLのジョブリストを作成する代わりに、Gearmanジョブサーバーにジョブを直接送信できます。これは、ジョブを「ロック」する必要がないことを意味します。

複数のワーカーに同じジョブを実行させることができます。

私が言ったようにそれを行う場合、より多くの作業を作成するあなたの労働者は、gearmam do backgroundを使用する必要があります。そうしないと、デッドループになってしまいます。 http://www.php.net/manual/en/gearmanclient.dobackground.php

于 2012-10-06T13:43:09.833 に答える