/**
  * Returns RequestsQueue for tests
  * 
  * @return cURL\RequestsQueue    Queue for tests
  */
 protected function prepareTestQueue()
 {
     $test = $this;
     $queue = new cURL\RequestsQueue();
     $queue->getDefaultOptions()->set(CURLOPT_RETURNTRANSFER, true)->set(CURLOPT_ENCODING, '');
     $queue->addListener('complete', function (cURL\Event $event) use($test) {
         $test->validateSuccesfulResponse($event->response, $event->request->_param);
     });
     for ($i = 0; $i < 5; $i++) {
         $request = new cURL\Request();
         $request->_param = $i;
         $request->getOptions()->set(CURLOPT_URL, $this->createRequestUrl($i));
         $queue->attach($request);
     }
     $this->assertEquals(5, $queue->count());
     $this->assertEquals(5, count($queue));
     return $queue;
 }
Beispiel #2
0
 public function run()
 {
     if (empty($this->robots)) {
         throw new \RuntimeException("No robot instances have been added. Use RobotSwarm::add() method.");
     }
     do {
         // Refill only when pause is NOT requested
         if (!$this->pauseRequested) {
             foreach ($this->robots as $robot) {
                 $this->refillRobot($robot);
             }
         }
         $queueNotEmptyBefore = $this->queue->count() > 0;
         // If queue is not empty, do socketPerform and store the result in variable
         $queueNotEmptyAfter = $queueNotEmptyBefore ? $this->queue->socketPerform() : false;
         if ($this->pauseRequested && $queueNotEmptyBefore && !$queueNotEmptyAfter) {
             $this->dispatch('queue.paused', new QueuePausedEvent($this));
             $this->pauseRequested = false;
         }
         usleep($this->tickInterval);
     } while ($queueNotEmptyAfter || !$this->requestProviderEmpty);
 }
Beispiel #3
0
 public function onTick()
 {
     if ($this->queue->count() > 0) {
         $this->queue->socketPerform();
     }
 }