/** * 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; }
/** * 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(); }
/** * 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); }
/** * 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')); }
/** * 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; }
/** * 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(); }
/** * 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; }