コード例 #1
0
ファイル: TwoLevels.php プロジェクト: netvlies/zf
 /**
  * Test if a cache is available or not (for the given id)
  *
  * @param  string $id cache id
  * @return mixed|false (a cache is not available) or "last modified" timestamp (int) of the available cache record
  */
 public function test($id)
 {
     $fastTest = $this->_fastBackend->test($id);
     if ($fastTest) {
         return $fastTest;
     } else {
         return $this->_slowBackend->test($id);
     }
 }
コード例 #2
0
 /**
  * Save some string datas into a cache record
  *
  * Note : $data is always "string" (serialization is done by the
  * core not by the backend)
  *
  * @param  string $data            Datas to cache
  * @param  string $id              Cache id
  * @param  array $tags             Array of strings, the cache record will be tagged by each string entry
  * @param  int   $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
  * @param  int   $priority         integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends
  * @return boolean true if no problem
  */
 public function save($data, $id, $tags = array(), $specificLifetime = false, $priority = 8)
 {
     $usage = $this->_getFastFillingPercentage('saving');
     $boolFast = true;
     $lifetime = $this->getLifetime($specificLifetime);
     $preparedData = $this->_prepareData($data, $lifetime, $priority);
     if ($priority > 0 && 10 * $priority >= $usage) {
         $fastLifetime = $this->_getFastLifetime($lifetime, $priority);
         $boolFast = $this->_fastBackend->save($preparedData, $id, array(), $fastLifetime);
         $boolSlow = $this->_slowBackend->save($preparedData, $id, $tags, $lifetime);
     } else {
         $boolSlow = $this->_slowBackend->save($preparedData, $id, $tags, $lifetime);
         if ($boolSlow === true) {
             $boolFast = $this->_fastBackend->remove($id);
             if (!$boolFast && !$this->_fastBackend->test($id)) {
                 // some backends return false on remove() even if the key never existed. (and it won't if fast is full)
                 // all we care about is that the key doesn't exist now
                 $boolFast = true;
             }
         }
     }
     return $boolFast && $boolSlow;
 }