Job::config()->addConnection(new Pheanstalk('127.0.0.1', '11300')); Job::config()->setQueuePrefix('test'); $runner = new Runner(); $ct = $runner->flush($queue); print "\nJOBS flushed from the queue before starting: {$ct}\n"; for ($i = 0; $i < 100; $i++) { $start = microtime(TRUE); $job = new Job($url); $job->queue = $queue; $id = $job->store(); $elapsed = number_format(microtime(TRUE) - $start, 3); print "\nSTORE " . $id . ' ' . $elapsed . 's'; } $start = microtime(TRUE); $runner->watch($queue); $runner->setTimelimit(20); $runner->setMax(10); $runner->attachDebugger($debugger = function ($v) { if ($v instanceof Exception) { $v = $v->__toString(); } if (!is_scalar($v)) { strval($v); } $dt = "\n[" . date('H:i:s') . '] '; echo $dt . str_replace("\n", $dt, trim($v)); }); $debugger("kicking off job runner ...\n---------------------"); Job::config()->setHandler(function (Http\Request $request) use($debugger) { $out = "\nHTTP"; if ($request->id) {
if (!isset($ct)) { $ct = 0; } $stats = $runner->stats(); $diff = $ct - $stats['processed']; $iterations = 1000 - $diff; for ($i = 0; $i < $iterations; $i++) { $job = new Job('http://127.0.0.1:11299/job.php?signed=1&ct=' . $ct . '&s=' . microtime(TRUE)); $job->queue = $queue; $id = $job->store(); $ct++; $debugger(sprintf("STORE - %s: %s", $id, $job->url)); } }); $runner->watch($queue); $runner->setTimelimit(300); $runner->setMax(10); //$runner->attachDebugger( $debugger ); declare (ticks=1); $start = microtime(TRUE); // signal handler function $sig_handler = function ($signo) use($runner, $start, $debugger, $start) { switch ($signo) { case SIGTERM: case SIGINT: case SIGHUP: // handle shutdown tasks $debugger("EXITING ... \nFinishing jobs in queue ..."); sleep(1); $runner->shutdown(); $elapsed = number_format(microtime(TRUE) - $start, 3);