2012-06-14 84 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