Write errors to stderr
[phinde.git] / bin / phinde-worker.php
1 #!/usr/bin/env php
2 <?php
3 namespace phinde;
4
5 chdir(dirname($argv[0]));
6
7 require_once __DIR__ . '/../src/init.php';
8
9 $gmworker = new \GearmanWorker();
10 $gmworker->addServer('127.0.0.1');
11
12 $gmworker->addFunction(
13     $GLOBALS['phinde']['queuePrefix'] . 'phinde_process',
14     function(\GearmanJob $job) {
15         $data = unserialize($job->workload());
16         Log::info(
17             "-- Processing " . $data['url']
18             . ' (' . implode(',', $data['actions']) . ')'
19         );
20         passthru(
21             './process.php ' . escapeshellarg($data['url'])
22             . ' ' . implode(' ', $data['actions'])
23         );
24     }
25 );
26
27 $gmworker->addFunction(
28     $GLOBALS['phinde']['queuePrefix'] . 'phinde_quit',
29     function(\GearmanJob $job) {
30         Log::info('Got exit job');
31         $job->sendComplete('');
32         exit(0);
33     }
34 );
35
36 while ($gmworker->work()) {
37     if ($gmworker->returnCode() != GEARMAN_SUCCESS) {
38         Log::error('Error running job: ' . $gmworker->returnCode());
39         break;
40     }
41 }
42 ?>