我们正在使用Gearman,什么时候使用doLowBackground或doHigh等方法,这些都会返回jobHandle,但是当我们执行任务时,没有jobHandle对象.我们得到了GearmanTask对象,而不是得到jobHandlestring(0) ""
有什么想法会导致这种情况吗?
谢谢!
编辑:这是代码和其他信息:
// $client = \GearmanClient; // servers added, all that jazz
// $workload = 'string';
$arguments = array(
'handleJob',
$workload
);
$task = call_user_func_array(array($client, $method), $arguments);
if ($task instanceof GearmanTask) {
$handles[] = $task->jobHandle();
}
$data = $client->runTasks();
Run Code Online (Sandbox Code Playgroud)
任务正确运行但$handle正在填充空字符串(每个任务添加一个)
编辑:这是我们得到的回应:
object(GearmanTask)#294 (0) {
}
Run Code Online (Sandbox Code Playgroud)
我已经抛弃了每一个PECL齿轮手对象,没有任何东西显示,这里是客户端,填充了服务器,选项等
object(GearmanClient)#291 (0) {
}
Run Code Online (Sandbox Code Playgroud)
没有显示任何东西.
在收到任务并由Gearman作业服务器排队之前,不会将作业句柄分配给任务.
但是,您可以使用GearmanClient :: setCreatedCallback()来获取排队后的句柄.必须在添加和运行任务之前完成此操作:
$client = new \GearmanClient();
$client->addServer('127.0.0.1');
$handles = array();
$client->setCreatedCallback(function (\GearmanTask $task) use (&$handles) {
$handles[] = $task->jobHandle();
});
$client->addTask('functionName', 'workload'); // ...
$client->runTasks();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |