/** * 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; }
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); }
public function onTick() { if ($this->queue->count() > 0) { $this->queue->socketPerform(); } }