Guest User

worker

a guest
Mar 14th, 2012
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. $context = new ZMQContext();
  2. // Socket for work input
  3. $work = new ZMQSocket($context, ZMQ::SOCKET_PULL);
  4. $work->setSockOpt(ZMQ::SOCKOPT_HWM, 1);
  5. $work->connect('tcp://localhost:5566');
  6.  
  7. // Socket for results output
  8. $sink = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
  9. $sink->connect('tcp://localhost:5567');
  10.  
  11. // Socket for control input
  12. $controller = new ZMQSocket($context, ZMQ::SOCKET_SUB);
  13. $controller->connect('tcp://localhost:5568');
  14. $controller->setSockOpt(ZMQ::SOCKOPT_SUBSCRIBE, "");
  15.  
  16. $poll = new ZMQPoll();
  17. $poll->add($work, ZMQ::POLL_IN);
  18. $poll->add($controller, ZMQ::POLL_IN);
  19. $read = $write = array();
  20.  
  21. $writer = new Zend_Log_Writer_Stream('/home/DMitchell/tmp/worker.log');
  22. $logger = new Zend_Log($writer);
  23. $message = 'A worker starting to log.';
  24. $logger->info($message);
  25.  
  26. while(true) {
  27. $events = $poll->poll($read, $write, 5000);
  28. if($events) {
  29. $message = 'A worker received an event!';
  30. $logger->info($message);
  31. foreach ($read as $socket) {
  32. if($socket === $work) {
  33. $json = $work->recv();
  34. $finalArray = json_decode($json);
  35. foreach ($finalArray as $keyString) {
  36. // DO THE WORK
  37. }
  38. $results = json_encode($timeArray);
  39. $sink->send($results);
  40. } elseif ($socket === $controller) {
  41. exit();
  42. }
  43. }
  44. }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment