(PECL gearman >= 0.6.0)
GearmanWorker::wait — Wait for activity from one of the job servers
   Causes the worker to wait for activity from one of the Gearman job servers when operating
   in non-blocking I/O mode.  On failure, issues a E_WARNING with the last Gearman error
   encountered.
  
This function has no parameters.
   Returns TRUE on success or FALSE on failure.
  
Example #1 Running worker in non-blocking mode
<?php
echo "Starting\n";
# Create our worker object
$worker= new GearmanWorker();
# Make the worker non-blocking
$worker->addOptions(GEARMAN_WORKER_NON_BLOCKING); 
# Add the default server (localhost, port 4730)
$worker->addServer(); 
# Add our reverse function
$worker->addFunction('reverse', 'reverse_fn');
# Try to grab a job
while (@$worker->work() ||
       $worker->returnCode() == GEARMAN_IO_WAIT ||
       $worker->returnCode() == GEARMAN_NO_JOBS)
{
  if ($worker->returnCode() == GEARMAN_SUCCESS)
    continue;
  echo "Waiting for next job...\n";
  if (!@$worker->wait()) 
  { 
    if ($worker->returnCode() == GEARMAN_NO_ACTIVE_FDS) 
    { 
      # We are not connected to any servers, so wait a bit before 
      # trying to reconnect. 
      sleep(5); 
      continue; 
    } 
    break; 
  } 
} 
echo "Worker Error: " . $worker->error() . "\n";
function reverse_fn($job)
{
  return strrev($job->workload());
}
?>