У меня есть простой клиент и работник Gearman. Я запускаю оба на рабочем столе Ubuntu. Я установил пакет gearman-beta pecl и версию Gearman из синаптики.PHP Gearman Задача иногда возвращает пустой объект
Моя проблема в том, что иногда Я получаю пустой объект от рабочего. Около 50% времени он показывает ожидаемый текст, остальное время он отображает «GearmanTask объект ( )» (от моего print_r в клиенте)
Ни в одной точке происходит исключение, клиент всегда считает, что работник успешно завершил свою работу. Я также должен отметить, что нет тайм-аутов, скрипт клиента выполняется быстро.
Client
$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).'</pre><br />';
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!';
}
Я не имею ничего в/вар/войти/Gearman-работы-сервера.
Мысли?