私はウサギのキューにいくつかのデータが頻繁に埋め込まれていることを前提としています(例えば、ユーザーが後で分析する必要があるアクション)。 30秒から50秒まで、毎秒新しい項目が追加されます。 私が必要とするのは、このキューを見渡し、そのデータに対していくつかのタスクを実行するワーカーを作成することです。私は次のようにすることができます:php rabbit workerを作成する最善の方法
class Worker
{
public function run()
{
$queue = new Queue('exchange', 'queue');
while (true)
{
$queue->processQueue();
}
}
}
さらに、サーバー上でworker.phpを実行するだけで、動作しているようです。
しかし、この無限ループが私のウサギのインスタンスに余分な負荷を加えてしまうのではないかと思います。たぶん、より良い方法は、だから私の労働者がしばらくの間、継続的にウサギが、スリープからデータを取得しません
class Worker
{
CONST IDLE = 5;
private $start = 0;
public function run()
{
$this->start = time();
$queue = new Queue('exchange', 'queue');
while (true)
{
$queue->processQueue();
//don't allow this worker to be working a lot
if (time() - $this->start >= 60 * 60 - self::IDLE)
{
break;
}
sleep(self::IDLE);
}
$queue->close();
}
}
のようになめらかに行うことです。そして1時間の仕事の後、それはただ仕事を止めるでしょうし、別の人のインスタンスはcrontabの仕事か他の仕事によって呼び出されますか?私は次のライブラリを使用するのRabbitMQと私の労働者を管理するために