当没有工作人员运行时,Gearman客户端应该抛出错误

时间:2014-04-30 05:57:49

标签: php gearman

如果没有工作人员正在运行,那么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;
 }

我怎么知道即使齿轮箱服务器正在工作但没有工人启动,如果客户打电话我怎么知道没有工人正在运行。

1 个答案:

答案 0 :(得分:0)

Gearman充当工作排队引擎。因此,当没有工作人员运行时,作业仍然在队列中但不会出错,这是系统的一个故意特征,如果您因某些原因需要让工作人员脱机,例如代码重构,维护等,工作仍然可以提交给齿轮工并等到工人重新初始化。如果您需要监控装备,您可以使用gearmand查询获取可用工人列表,这些工人将返回齿轮箱服务器上可用工人的列表。