示例#1
0
 public function getResults($cacheKey)
 {
     if (self::canUseCurlMulti() && self::$_curlMultiHandle && count(self::$_curlHandles) > 0) {
         do {
             while (($execrun = curl_multi_exec(self::$_curlMultiHandle, $running)) == CURLM_CALL_MULTI_PERFORM) {
             }
             if ($execrun != CURLM_OK) {
                 break;
             }
             while ($done = curl_multi_info_read(self::$_curlMultiHandle)) {
                 $results = json_decode(curl_multi_getcontent($done['handle']), true);
                 $cacheKeyForReturn = array_search($done['handle'], self::$_curlHandles, true);
                 $this->_cacheSave($cacheKeyForReturn, $results, 60);
                 curl_multi_remove_handle(self::$_curlMultiHandle, $done['handle']);
             }
         } while ($running);
         curl_multi_close(self::$_curlMultiHandle);
         self::$_curlMultiHandle = null;
     } elseif (!self::canUseCurlMulti()) {
         $results = @json_decode(self::$_curlHandles[$cacheKey]->getBody(), true);
         $this->_cacheSave($cacheKey, $results, 60);
     }
     if (!empty(self::$_cachedResults[$cacheKey])) {
         return self::$_cachedResults[$cacheKey];
     } else {
         return false;
     }
 }