コード例 #1
0
ファイル: Cache.php プロジェクト: widmogrod/sengin
 public function getData()
 {
     if (!$this->_options->isCacheEnabled() || !$this->_dataSource instanceof Cachable) {
         return $this->_dataSource->getData();
     }
     $cacheDir = $this->_options->getCacheDir();
     $cacheKey = $this->_dataSource->getCacheKey();
     $cacheFile = $cacheDir . '/' . $cacheKey . '.sengincache';
     if (is_file($cacheFile)) {
         $expirationTime = $this->_options->getExpirationTime();
         $lastModificationTime = time() - filemtime($cacheFile);
         if ($lastModificationTime <= $expirationTime) {
             // from cache
             return file_get_contents($cacheFile);
         }
         // cache expired, remove cache data
         unlink($cacheFile);
     }
     $data = $this->_dataSource->getData();
     // save cache data
     file_put_contents($cacheFile, $data);
     return $data;
 }