Я пытаюсь запустить example Gearman worker from their documentation (см. Ниже), но каждый раз я получаю множество ошибок в файле журнала Gearman следующим образом: FATAL [ 0] gearman_packet_unpack_header:invalid command value
. Когда я запускаю клиент Gearman (опять же, свой пример), он ничего не меняет. Ничего не произошло.FATAL [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 является самой последней стабильной версией. Я не уверен, что еще попробовать.
Я столкнулся с похожими, хотя и не идентичными проблемами. Я отказался от расширения PECL и в процессе перехода на Net_Gearman PEAR, поскольку он является PHP, я ожидаю, что он будет намного более устойчивым к различиям в версии и архитектуре. – halfer