0

すべてのワーカーが動作しているときにクライアントをアイドル状態にすることは可能ですか?

次のケースがあります。

$client= new GearmanClient();
$client->addServer();

$data = array(thousands of entries);

foreach($data as $dt) {
    $client->doBackground('doFancy', $dt);
}

これを実行すると、何千ものキューが作成されたり、メモリが過負荷になることさえあります。

foreach ループが新しいジョブの割り当てを続行するまで、ワーカーが解放されるのを待つことは可能ですか?

4

1 に答える 1

0

キューサイズのカウンターを作成し、完了イベントのコールバックを設定できます。このコールバックでは、カウンターをデクリメントしてカウンターをチェックする必要があります。その値が N 未満の場合は、新しい一連のタスクが追加され、カウンターがインクリメントされます。

于 2013-02-23T11:36:16.030 に答える