gpt4 book ai didi

PHP Gearman 任务不返回 jobHandle

转载 作者:行者123 更新时间:2023-12-02 04:54:33 25 4
gpt4 key购买 nike

我们正在使用 Gearman,当使用像 doLowBackground 或 doHigh 这样的方法时,它们都会返回一个 jobHandle,但是当我们使用 tasks 时没有 jobHandle 对象。我们获取 GearmanTask 对象,而不是获取 jobHandle,我们获取 string(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();

任务运行正常,但 $handle 正在填充空字符串(每个添加一个任务)

编辑:这是我们得到的回应:

object(GearmanTask)#294 (0) {
}

我已经转储了每个 PECL gearman 对象,没有任何显示,这是客户端,填充了服务器、选项等

object(GearmanClient)#291 (0) {
}

不显示任何内容。

最佳答案

在任务被 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();

关于PHP Gearman 任务不返回 jobHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com