Gearman工作状态有问题

| 我有一个Gearman服务器正在运行一个过程,该过程需要几分钟才能完成。我正在运行进度条以显示完成情况,并且正在尝试使用Gearman PHP扩展和jobStatus()函数获取进度条的百分比。 由于前两个字段(已知+仍在运行)返回true,因此该作业肯定处于活动状态并已找到。但是,第三和第四字段(完成百分比的分子和分母)将一无所获。有谁知道这可能是为什么或如何计算这些数字?     
已邀请:
public bool GearmanJob::sendStatus ( int $numerator , int $denominator )
  将状态信息发送到作业   服务器和所有侦听客户端。采用   这可以指定占百分之几   工作已经完成。 为了能够使用它,您可能还需要对客户端进行一些改动以处理通信。 例 client.php
<?php
global $argc,$argv;

if (!file_exists($argv[1])) {
        echo \"File not found\\n\";
        exit(1);
}

$gmclient= new GearmanClient();
$gmclient->addServer();
do
{
  $result = $gmclient->do(\"linecount\", file_get_contents($argv[1]));
  # Check for various return packets and errors.

  switch($gmclient->returnCode())
  {
    case GEARMAN_WORK_STATUS:
      list($numerator, $denominator)= $gmclient->doStatus();
      echo \"Status: \" . sprintf(\"%d%%\",($numerator/$denominator)*100)
             . \" complete\\r\";
      break;
    case GEARMAN_SUCCESS:
      break;
  }
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);

echo \"\\nResult: $result\\n\";
worker.php
<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction(\"linecount\", \"linecount\");
while ($worker->work());

    function linecount($job)
    {
            $lines = preg_split(\'/[\\r\\n]/\',
                       $job->workload(),null,PREG_SPLIT_NO_EMPTY);
            $linecount = count($lines);
            $n = 0;
            foreach ($lines as $line) {
                    usleep(3000);
                    $n++;
                    $job->sendStatus($n,$linecount);
                    $ret++;
            }
            return $ret;
    }
    
工作人员是否配置为返回状态? 如果您自己编写它们,则必须做一些额外的工作才能使它们返回详细信息。     

要回复问题请先登录注册