Exemplo n.º 1
0
 /**
  * @param string $url
  */
 public function getNefubContents($url, $maxAge, array $postData = null)
 {
     if (is_null($maxAge)) {
         self::put('Max age mag geen null zijn');
         throw new Exception('Max age mag geen null zijn');
     }
     $oCache = RequestCache::getRequest($url, $postData);
     // Request te oud bevonden
     if (!$oCache || $oCache->getAgeInDays() >= $maxAge) {
         $urls = array();
         if ($this->retrieveLog->urls) {
             $urls = json_decode($this->retrieveLog->urls);
         }
         if (in_array($url, $urls)) {
             echo $url . ' is al eerder opgehaald<br />';
             var_dump_path(debug_backtrace());
             exit;
         }
         $urls[] = $url;
         $this->retrieveLog->urls = json_encode($urls);
         $this->retrieveLog->save();
         if (self::$totalRequests < LIMIT_API_REQUESTS) {
             $this->countRequests++;
             self::$totalRequests++;
             // alleen nieuw object nodig als url niet eerder is opgehaald, anders vernieuwen we de rij alleen
             if (!$oCache) {
                 $oCache = new RequestCache();
                 $oCache->url = $url;
                 $oCache->save();
             }
             $this->retrieveLog->requests = self::$totalRequests;
             $this->retrieveLog->save();
             $context = null;
             if (is_array($postData)) {
                 $httpQuery = http_build_query($postData);
                 $streamOptions = array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $httpQuery));
                 $context = stream_context_create($streamOptions);
             }
             $oCache->postData = is_array($postData) ? json_encode($postData) : null;
             $oCache->response = file_get_contents($url, false, $context);
             $oCache->success = is_string($oCache->response);
             $oCache->update_time = date("Y-m-d H:i:s");
             $oCache->save();
         } else {
             $text = 'Limiet van ' . LIMIT_API_REQUESTS . ' bereikt bij het ophalen van ' . $url;
             self::put($text);
             echo $text;
             $this->retrieveLog->requests = self::$totalRequests;
             $this->retrieveLog->finished = true;
             $this->retrieveLog->successfully = false;
             $this->retrieveLog->save();
             exit;
         }
     }
     return $oCache->response;
 }
Exemplo n.º 2
0
 public function testCacheRequest()
 {
     $request = $this->getMockBuilder('Silktide\\SemRushApi\\Model\\Request')->disableOriginalConstructor()->getMock();
     $request->method('getUrlParameters')->willReturn(["a" => "b", "c" => "d", 'export_columns' => ['a', 'b']]);
     $result = $this->requestCache->fetch($request);
     $this->assertNull($result);
     $result = $this->getMockBuilder('Silktide\\SemRushApi\\Model\\Result')->disableOriginalConstructor()->getMock();
     $this->requestCache->cache($request, $result);
     $request = $this->getMockBuilder('Silktide\\SemRushApi\\Model\\Request')->disableOriginalConstructor()->getMock();
     $request->method('getUrlParameters')->willReturn(["c" => "d", 'export_columns' => ['a', 'b'], "a" => "b"]);
     $cachedResult = $this->requestCache->fetch($request);
     $this->assertEquals($result, $cachedResult);
 }