/** * Run curl_multi_exec() loop. */ public function wait() { curl_multi_exec($this->mh, $active); // Start requests. do { // if cURL handle is running, use curl_multi_select() // otherwise, just sleep until nearest time $this->scheduler->isEmpty() ? $this->delayer->sleep() : curl_multi_select($this->mh, $this->options['interval']) < 0 && usleep($this->options['interval'] * 1000000); curl_multi_exec($this->mh, $active); $this->scheduler->consume(); $this->delayer->consume(); } while (!$this->haltException && (!$this->scheduler->isEmpty() || !$this->delayer->isEmpty())); if ($this->haltException) { throw $this->haltException; } }