Gearman addTaskBackground полный Обратный звонок не запускает

Я пытаюсь выполнить некоторую работу в фоновом режиме и написать результат для результата файла из полного обратного вызова, но его единственная работа для addTask (не в фоновом режиме), а не для addTaskBackground

есть какие-то идеи?

Спасибо за помощь!

 $client = new GearmanClient(); $client->addServer('localhost'); $client->setCompleteCallback("complete"); $client->addTaskBackground('upload', 'http://youtube.com/watch?v=o3mP3mJDL2k', null, 1); $client->addTaskBackground('upload', 'http://www.youtube.com/watch?v=SgAVnlnf8w0', null, 2); /* in these case complete callback works $client->addTask('upload', 'http://youtube.com/watch?v=o3mP3mJDL2k'); $client->addTask('upload', 'http://www.youtube.com/watch?v=SgAVnlnf8w0'); */ $client->runTasks(); function complete($task){ file_put_contents('/home/vonica/public_html/test/tmp/1.txt', $task->unique() . ", " . $task->data() . "\n", FILE_APPEND); } 

 $worker = new GearmanWorker(); $worker->addServer('localhost'); $worker->addFunction('upload', 'uploader'); while($worker->work()){ if ($worker->returnCode() != GEARMAN_SUCCESS) { echo "ret code: " . $worker->returnCode() . "\n"; break; } }; function uploader($job){ $content = $job->workload(); exec ('echo $( youtube-dl -f worst "'.$content.'")'); return $content; } в $worker = new GearmanWorker(); $worker->addServer('localhost'); $worker->addFunction('upload', 'uploader'); while($worker->work()){ if ($worker->returnCode() != GEARMAN_SUCCESS) { echo "ret code: " . $worker->returnCode() . "\n"; break; } }; function uploader($job){ $content = $job->workload(); exec ('echo $( youtube-dl -f worst "'.$content.'")'); return $content; } 

CompleteCallback не будет вызван для завершения фоновой задачи. Если вы хотите проверить статус фонового задания, используйте GearmanClient::jobStatus .

Client.php

 // save this $job_handle somewhere $job_handle = $client->doBackground('upload', 'http://youtube.com/watch?v=o3mP3mJDL2k', null, 1); 

Status.php

 // use previously saved job handle to check job's status $job_handle = $_GET['job_handle']; $stat = $client->jobStatus($job_handle); echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n"; 

Подробнее здесь