如果没有工作人员正在运行,那么gearman客户端如何抛出错误。我添加了故障回调,但它仍然没有给我失败的响应。请查看以下代码
client.php
$client = new GearmanClient();
$complete = 0;
$fail = 0;
$client->addServer($server, $server_port);
$client->setFailCallback(function () use (&$fail) {
$fail++;
error_log(__FILE__." ".__LINE__." :FAILED: \n",3,"/var/www/tmp.txt");
});
$client->doLowBackground("write_log");
$exec = exec('gearadmin --workers | grep pushers_', $output, $res);
$pri = $client->runTasks();
if ($client->returnCode() != GEARMAN_SUCCESS)
{
error_log(__FILE__." ".__LINE__." :STARTED: ".$client->returnCode()." \n",3,"/var/www/tmp.txt");
echo "bad return code\n";
exit;
}
我怎么知道即使齿轮箱服务器正在工作但没有工人启动,如果客户打电话我怎么知道没有工人正在运行。
答案 0 :(得分:0)
Gearman充当工作排队引擎。因此,当没有工作人员运行时,作业仍然在队列中但不会出错,这是系统的一个故意特征,如果您因某些原因需要让工作人员脱机,例如代码重构,维护等,工作仍然可以提交给齿轮工并等到工人重新初始化。如果您需要监控装备,您可以使用gearmand查询获取可用工人列表,这些工人将返回齿轮箱服务器上可用工人的列表。