diff --git a/reference/gearman/gearmanworker/wait.xml b/reference/gearman/gearmanworker/wait.xml index f3d2ad9ab5..e32f2dc2e4 100644 --- a/reference/gearman/gearmanworker/wait.xml +++ b/reference/gearman/gearmanworker/wait.xml @@ -15,7 +15,8 @@ Causes the worker to wait for activity from one of the Gearman job servers when operating - in non-blocking I/O mode. + in non-blocking I/O mode. On failure, issues a E_WARNING with the last Gearman error + encountered. @@ -27,7 +28,67 @@ &reftitle.returnvalues; - A standard Gearman return value. + &return.success; + + + + + &reftitle.examples; + + + Running worker in non-blocking mode + +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()); +} + + +?> +]]> + +