/** * @inheritdoc */ public function multiRequest(array $urls) { $client = new Client(); $requests = array(); foreach ($urls as $urlName => $urlData) { if (is_string($urlData)) { $urlData = array($urlData, array()); } $urlOptions = new Options($urlData[1]); $method = $urlOptions->get('method', 'GET', 'up'); $args = $urlOptions->get('args'); $url = 'GET' === $method ? Url::addArg((array) $args, $urlData[0]) : $urlData[0]; $requests[$urlName] = $client->createRequest($method, $url, $this->_getClientOptions($urlOptions, $method, $args)); } $httpResults = Pool::batch($client, $requests); /** @var string $resName */ /** @var Response $httpResult */ $result = array(); $index = 0; $keys = array_keys($urls); foreach ($keys as $resName) { $httpResult = $httpResults->offsetGet($index++); $result[$resName] = array($httpResult->getStatusCode(), $httpResult->getHeaders(), $httpResult->getBody()->getContents()); } return $result; }
/** * @inheritdoc */ public function multiRequest(array $urls) { $requests = array(); foreach ($urls as $urlName => $urlData) { if (is_string($urlData)) { $urlData = array($urlData, array()); } $urlOptions = new Options($urlData[1]); $method = $urlOptions->get('method', 'GET', 'up'); $args = $urlOptions->get('args'); $url = 'GET' === $method ? Url::addArg((array) $args, $urlData[0]) : $urlData[0]; $args = 'GET' !== $method ? $args : array(); $requests[$urlName] = array('url' => $url, 'headers' => $urlOptions->getHeaders(), 'data' => $args, 'type' => $method, 'options' => $this->_getClientOptions($urlOptions)); } $httpResults = \Requests::request_multiple($requests); /** @var string $resName */ /** @var \Requests_Response $httpResult */ $result = array(); foreach ($httpResults as $resName => $httpResult) { $result[$resName] = array($httpResult->status_code, $httpResult->headers->getAll(), $httpResult->body); } return $result; }
/** * @inheritdoc */ public function multiRequest(array $urls) { $client = new Client(); $promises = array(); foreach ($urls as $urlName => $urlData) { if (is_string($urlData)) { $urlData = array($urlData, array()); } $urlOptions = new Options($urlData[1]); $method = $urlOptions->get('method', 'GET', 'up'); $args = $urlOptions->get('args'); $url = 'GET' === $method ? Url::addArg((array) $args, $urlData[0]) : $urlData[0]; $promises[$urlName] = $client->requestAsync($method, $url, $this->_getClientOptions($urlOptions, $method, $args)); } $httpResults = Promise\unwrap($promises); /** @var string $resName */ /** @var Response $httpResult */ $result = array(); foreach ($httpResults as $resName => $httpResult) { $result[$resName] = array($httpResult->getStatusCode(), $httpResult->getHeaders(), $httpResult->getBody()->getContents()); } return $result; }