Php Gearman addTaskBackground完整回调未激发

Php Gearman addTaskBackground完整回调未激发,php,callback,background-process,gearman,Php,Callback,Background Process,Gearman,我正在尝试在后台运行一些作业,并将结果从完整回调写入文件result,但它只适用于addTask而不适用于后台,也不适用于addTaskBackground 有人有主意吗 $client=新的GearmanClient; $client->addServer'localhost'; $client->setCompleteCallbackcomplete; $client->addTaskBackground'upload','http://youtube.com/watch?v=o3mP3mJ

我正在尝试在后台运行一些作业,并将结果从完整回调写入文件result,但它只适用于addTask而不适用于后台,也不适用于addTaskBackground

有人有主意吗

$client=新的GearmanClient; $client->addServer'localhost'; $client->setCompleteCallbackcomplete; $client->addTaskBackground'upload','http://youtube.com/watch?v=o3mP3mJDL2k,null,1; $client->addTaskBackground'upload','http://www.youtube.com/watch?v=SgAVnlnf8w0,空,2; /*在这种情况下,完全回调可以工作 $client->addTask'upload','http://youtube.com/watch?v=o3mP3mJDL2k'; $client->addTask'upload','http://www.youtube.com/watch?v=SgAVnlnf8w0'; */ $client->runTasks; 函数完成$task{ 文件\u put\u contents'/home/vonica/public\u html/test/tmp/1.txt',$task->unique.,.$task->data.\n,文件\u APPEND; } $worker=新的GearmanWorker; $worker->addServer'localhost'; $worker->addFunction'upload'、'uploader'; 而$worker->work{ 如果$worker->returnCode!=GEARMAN\u成功{ echo ret代码:.$worker->returnCode。\n; 打破 } }; 函数上传器$job{ $content=$job->workload; exec'echo$youtube dl-f best.$content.'; 返回$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";
阅读更多

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";
阅读更多