[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/google/Google/Cache/ -> Apc.php (source)

   1  <?php
   2  /*
   3   * Copyright 2010 Google Inc.
   4   *
   5   * Licensed under the Apache License, Version 2.0 (the "License");
   6   * you may not use this file except in compliance with the License.
   7   * You may obtain a copy of the License at
   8   *
   9   *     http://www.apache.org/licenses/LICENSE-2.0
  10   *
  11   * Unless required by applicable law or agreed to in writing, software
  12   * distributed under the License is distributed on an "AS IS" BASIS,
  13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14   * See the License for the specific language governing permissions and
  15   * limitations under the License.
  16   */
  17   
  18  require_once "Google/Cache/Abstract.php";
  19  require_once "Google/Cache/Exception.php";
  20  
  21  /**
  22   * A persistent storage class based on the APC cache, which is not
  23   * really very persistent, as soon as you restart your web server
  24   * the storage will be wiped, however for debugging and/or speed
  25   * it can be useful, and cache is a lot cheaper then storage.
  26   *
  27   * @author Chris Chabot <[email protected]>
  28   */
  29  class Google_Cache_Apc extends Google_Cache_Abstract
  30  {
  31    public function __construct(Google_Client $client)
  32    {
  33      if (! function_exists('apc_add') ) {
  34        throw new Google_Cache_Exception("Apc functions not available");
  35      }
  36    }
  37  
  38     /**
  39     * @inheritDoc
  40     */
  41    public function get($key, $expiration = false)
  42    {
  43      $ret = apc_fetch($key);
  44      if ($ret === false) {
  45        return false;
  46      }
  47      if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) {
  48        $this->delete($key);
  49        return false;
  50      }
  51      return $ret['data'];
  52    }
  53  
  54    /**
  55     * @inheritDoc
  56     */
  57    public function set($key, $value)
  58    {
  59      $rc = apc_store($key, array('time' => time(), 'data' => $value));
  60      if ($rc == false) {
  61        throw new Google_Cache_Exception("Couldn't store data");
  62      }
  63    }
  64  
  65    /**
  66     * @inheritDoc
  67     * @param String $key
  68     */
  69    public function delete($key)
  70    {
  71      apc_delete($key);
  72    }
  73  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1