Когда я запускаю ретранслятор до трех рабочих на одном сервере, работает нормально, но когда я запускаю четвертый, PHP-код работает нормально, но не может обнаружить нового рабочего, а также не очищая очередь заданий.Не удается запустить более 3 рабочих-ретрансляторов на том же сервере
protected function createWorker()
{
$this->worker = new \GearmanWorker();
$config = $this->app->config->job_remote;
$this->worker->addServer($config['host'], $config['port']);
return $this->worker;
}
public function listen($eventType, $callback)
{
if (!($this->worker instanceof \GearmanWorker)){
$this->worker = $this->createWorker();
}
$this->worker->addFunction($eventType, $callback);
return $this->worker;
}
public function doWork($worker)
{
if (!($worker instanceof \GearmanWorker)){
$worker = $this->createWorker();
}
$this->worker = $worker;
while (1) {
$this->worker->work();
$this->app->log->debug($this->worker->returnCode());
if ($this->worker->returnCode() != \GEARMAN_SUCCESS) {
break;
}
}
}
Сначала я зову 'слушать' метод, а затем '' DoWork метод
стороне клиента Код:
protected function createClient()
{
$this->client = new \GearmanClient();
$config = $this->app->config->job_remote;
$this->client->addServer($config['host'], $config['port']);
return $this->client;
}
public function addTask($eventType, array $params)
{
if (!($this->client instanceof \GearmanClient)){
$this->client = $this->createClient();
}
// add single task in queue
$this->client->addTaskBackground($eventType, serialize($params));
// Run task
$this->client->runTasks();
}
Где твой код .. что ты пробовал –
Я уже сейчас добавил код –
Где ваш код клиента ??? откуда вы назначаете задание. –