0
ギアマンを実行すると、1人のサーバで3人のワーカーがうまく動作しますが、4人目の1人の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' メソッド
クライアント側のコード '聞く' 呼び出しています:あなたがいない任意の件まで実行することができますGearmanManagerを使用
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();
}
あなたのコードはどこにありますか?何を試しましたか –
コードを追加しました。 –
あなたのクライアントコードはどこですか?どこから仕事を割り当てるか。 –