當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Client::sendRequests方法代碼示例

本文整理匯總了PHP中GuzzleHttp\Client::sendRequests方法的典型用法代碼示例。如果您正苦於以下問題:PHP Client::sendRequests方法的具體用法?PHP Client::sendRequests怎麽用?PHP Client::sendRequests使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在GuzzleHttp\Client的用法示例。


在下文中一共展示了Client::sendRequests方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: next

 public function next()
 {
     if (count($this->responseCache) == 0) {
         $urls = $this->pageContainer->pop($this->parallelReqeusts);
         if (empty($urls)) {
             return false;
         }
         $requests = array();
         foreach ($urls as $url) {
             if (!$this->isFiltered($url)) {
                 $request = RequestFactory::getRequest($url, 'GET', 'php://memory', [], []);
                 $requests[] = $request;
             }
         }
         if (empty($requests)) {
             return $this->next();
         }
         try {
             $this->responseCache = $this->httpClient->sendRequests($requests);
         } catch (MultiHttpAdapterException $e) {
             $exceptions = $e->getExceptions();
             $errorMessages = "";
             foreach ($exceptions as $exception) {
                 // @fixme this must be part of the http client
                 $message = $exception->getMessage();
                 if (strpos($message, "An error occurred when fetching the URI") === 0) {
                     $url = substr($message, "41", strpos($message, '"', 41) - 41);
                     if (strpos($url, '/') === 0) {
                         $this->pageContainer->push(new Uri($this->startUri->getScheme() . '://' . $this->startUri->getHost() . $url));
                     }
                 } else {
                     $errorMessages .= $exception->getMessage() . "\n";
                 }
             }
             if ($errorMessages != "") {
                 throw new \RuntimeException($errorMessages);
             }
         }
     }
     if (empty($this->responseCache)) {
         return $this->next();
     }
     $response = array_pop($this->responseCache);
     if ($response->hasHeader('Content-Type')) {
         $contentTypeElements = explode(';', $response->getHeader('Content-Type')[0]);
         $contentType = array_shift($contentTypeElements);
         if ($contentType === "text/html") {
             $document = new Document((string) $response->getBody(), true);
             $elements = $document->getUnorderedDependencies($response->getUri());
             foreach ($elements as $element) {
                 $urlString = $this->createCleanUriString($element);
                 if (!array_key_exists($urlString, $this->comingFrom)) {
                     $this->comingFrom[$urlString] = $response->getUri();
                 }
                 $this->pageContainer->push($element);
             }
         }
     }
     return $response;
 }
開發者ID:phmlabs,項目名稱:crawler,代碼行數:60,代碼來源:Crawler.php


注:本文中的GuzzleHttp\Client::sendRequests方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。