2012-06-14 49 views
3

我试图运行example Gearman worker from their documentation(见下文),但每次我都会在我的Gearman日志文件中看到如下错误:FATAL [ 0] gearman_packet_unpack_header:invalid command value。当我运行Gearman客户端(再次,他们自己的例子),它似乎没有改变任何东西。什么都没发生。致命[0] gearman_packet_unpack_header:无效的命令值

这里是失败的

# Create our worker object. 
$worker= new GearmanWorker(); 

# Add default server (localhost). 
$worker->addServer(); 

# Register function "reverse" with the server. 
$worker->addFunction("reverse", "reverse_fn"); 

while (1) 
{ 
    print "Waiting for job...\n"; 

    $ret= $worker->work(); 
    if ($worker->returnCode() != GEARMAN_SUCCESS) 
    break; 
} 

# A much simple reverse function 
function reverse_fn($job) 
{ 
    $workload= $job->workload(); 
    echo "Received job: " . $job->handle() . "\n"; 
    echo "Workload: $workload\n"; 
    $result= strrev($workload); 
    echo "Result: $result\n"; 
    return $result; 
} 

>php -i样品工人代码:

extension version 1.0.2 
libgearman version 0.29 
Default TCP Host localhost 
Default TCP Port 4730 

>gearmand -V

gearmand 0.29

如何正确配置Gearman的工作? libgearman是与gearmand相同的版本,我的PECL扩展是最新的稳定版本。我不知道还有什么可以尝试的。

回答

2

据我所知,Gearman的PECL扩展版本1.0.2不适用于Gearman 0.29版本。我更新了Gearman和libgearman到版本0.33,并且一旦我做了我的扩展工作。

+0

我遇到了类似的问题,但并不完全相同。我已经放弃了PECL扩展,并且正在切换到PEAR的Net_Gearman - 因为它是PHP,我认为它对版本/体系结构的差异更具弹性。 – halfer