Exemplo n.º 1
0
 /**
  * Constructs a new cache instance.
  *
  * You should not call this method from your code, instead you should use the cache::make methods.
  *
  * This method is public so that the cache_factory is able to instantiate cache instances.
  * Ideally we would make this method protected and expose its construction to the factory method internally somehow.
  * The factory class is responsible for this in order to centralise the storage of instances once created. This way if needed
  * we can force a reset of the cache API (used during unit testing).
  *
  * @param cache_definition $definition The definition for the cache instance.
  * @param cache_store $store The store that cache should use.
  * @param cache_loader|cache_data_source $loader The next loader in the chain or the data source if there is one and there
  *      are no other cache_loaders in the chain.
  */
 public function __construct(cache_definition $definition, cache_store $store, $loader = null)
 {
     global $CFG;
     $this->definition = $definition;
     $this->store = $store;
     $this->storetype = get_class($store);
     $this->perfdebug = !empty($CFG->perfdebug);
     if ($loader instanceof cache_loader) {
         $this->loader = $loader;
         // Mark the loader as a sub (chained) loader.
         $this->loader->set_is_sub_loader(true);
     } else {
         if ($loader instanceof cache_data_source) {
             $this->datasource = $loader;
         }
     }
     $this->definition->generate_definition_hash();
     $this->staticacceleration = $this->definition->use_static_acceleration();
     if ($this->staticacceleration) {
         $this->staticaccelerationsize = $this->definition->get_static_acceleration_size();
     }
     $this->hasattl = $this->definition->get_ttl() > 0;
 }
Exemplo n.º 2
0
 /**
  * Initialises the cache.
  *
  * Once this has been done the cache is all set to be used.
  *
  * @param cache_definition $definition
  */
 public function initialise(cache_definition $definition)
 {
     $this->storeid = $definition->generate_definition_hash();
     $this->store =& self::register_store_id($this->name . '-' . $definition->get_id());
     $this->ttl = $definition->get_ttl();
     $maxsize = $definition->get_maxsize();
     if ($maxsize !== null) {
         // Must be a positive int.
         $this->maxsize = abs((int) $maxsize);
         $this->storecount = count($this->store);
     }
     $this->check_ttl();
 }
Exemplo n.º 3
0
 /**
  * Initialises the store instance for use.
  *
  * Once this has been done the cache is all set to be used.
  *
  * @param cache_definition $definition
  * @throws coding_exception
  */
 public function initialise(cache_definition $definition)
 {
     if ($this->is_initialised()) {
         throw new coding_exception('This mongodb instance has already been initialised.');
     }
     $this->database = $this->connection->selectDB($this->databasename);
     $this->definitionhash = 'm' . $definition->generate_definition_hash();
     $this->collection = $this->database->selectCollection($this->definitionhash);
     $options = array('name' => 'idx_key');
     if ($this->legacymongo) {
         $options['safe'] = $this->usesafe;
     } else {
         $options['w'] = $this->usesafe ? 1 : 0;
     }
     $this->collection->ensureIndex(array('key' => 1), $options);
 }
Exemplo n.º 4
0
 /**
  * Initialises the store instance for use.
  *
  * This function is reponsible for making the connection.
  *
  * @param cache_definition $definition
  * @throws coding_exception
  */
 public function initialise(cache_definition $definition)
 {
     if ($this->is_initialised()) {
         throw new coding_exception('This mongodb instance has already been initialised.');
     }
     $this->definitionhash = $definition->generate_definition_hash();
     $this->connection = new Mongo($this->server, $this->options);
     $this->database = $this->connection->selectDB($this->databasename);
     $this->collection = $this->database->selectCollection($this->definitionhash);
     $this->collection->ensureIndex(array('key' => 1), array('safe' => $this->usesafe, 'name' => 'idx_key'));
 }
Exemplo n.º 5
0
Arquivo: lib.php Projeto: dg711/moodle
 /**
  * Initialises a new instance of the cache store given the definition the instance is to be used for.
  *
  * This function should prepare any given connections etc.
  *
  * @param cache_definition $definition
  * @return bool
  */
 public function initialise(cache_definition $definition)
 {
     $this->definition = $definition;
     $this->cacheprefix = $this->storeprefix . $definition->generate_definition_hash() . '__';
     return true;
 }
Exemplo n.º 6
0
 /**
  * Initialises the cache.
  *
  * Once this has been done the cache is all set to be used.
  *
  * @param cache_definition $definition
  */
 public function initialise(cache_definition $definition)
 {
     $this->storeid = $definition->generate_definition_hash();
     $this->store =& self::register_store_id($this->storeid);
     $this->ttl = $definition->get_ttl();
 }
Exemplo n.º 7
0
 /**
  * Initialize the store.
  *
  * @param cache_definition $definition
  * @return bool
  */
 public function initialise(cache_definition $definition)
 {
     $this->definition = $definition;
     $this->hash = $definition->generate_definition_hash();
     return true;
 }