У меня есть простой клиент Gearman и рабочий. Я использую оба на своем рабочем столе Ubuntu. Я установил пакет gearman-beta pecl и версию Gearman от synaptic.
Моя проблема в том, что иногда Я получаю пустой объект от рабочего. Примерно в 50% случаев отображается ожидаемый текст, в остальное время отображается «Объект GearmanTask».
(
) "(из моего print_r в клиенте)
Ни в коем случае не происходит исключение, клиент всегда думает, что работник успешно завершил. Следует также отметить, что таймаутов нет, клиентский скрипт выполняется быстро.
Клиент
<code>$gmclient = new GearmanClient();
$gmclient->addServer();
$gmclient->addTask('test','just some text');
$gmclient->setCompleteCallback("complete");
$gmclient->setFailCallback('fail');
$gmclient->runTasks();
function fail() {
echo "FAIL";
}
function complete($task) {
print "COMPLETE: " . $task->data() . "<br />";
if($task->data() == '') {
echo '<pre>'.print_r($task, true).'
';
echo $ task-> error ();
}
}
Рабочий (test.php)
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("test", "test_function");
while (true) {
$worker->work();
print $worker->returnCode();
}
function test_function($job) {
return $job->workload() . ' worked!';
}
У меня нет ничего в /var/log/gearman-job-server.
Мысли