$MCACHE is initially based on core API that is shared between memcached and
turckmmcache/eaccelerator. The core operations are add(), set() and delete()
This initial implementation uses the PECL-based PHP client. Would be trivial
to add support for a PHP-based client.
The $MCACHE facility can be used for DB cache, text filters cache, and possibly
for sessions.
* @global object(session) $SESSION
*/
global $SESSION;
+/**
+ * Definition of shared memory cache
+ */
+global $MCACHE;
/**
* Definition of course type
* @global object(course) $COURSE
unset($originaldatabasedebug);
error_reporting($CFG->debug);
+/// Shared-Memory cache init -- will set $MCACHE
+/// $MCACHE is a global object that offers at least add(), set() and delete()
+/// with similar semantics to the memcached PHP API http://php.net/memcache
+ if (!empty($CFG->memcached) && !empty($CFG->memcachedhosts)) {
+ init_memcached();
+ }
/// Set a default enrolment configuration (see bug 1598)
if (!isset($CFG->enrol)) {
return $unicodedb;
}
+function init_memcached() {
+ global $CFG, $MCACHE;
+
+ if (!function_exists('memcache_connect')) {
+ debugging("Memcached is set to true but the memcached extension is not installed");
+ return false;
+ }
+
+ $hosts = split(',', $CFG->memcachedhosts);
+ $MCACHE = new Memcache;
+ if (count($hosts) === 1) {
+ // the faster pconnect is only available
+ // for single-server setups
+ $MCACHE->pconnect($hosts[0]);
+ } else {
+ // multi-host setup will share key space
+ foreach ($hosts as $host) {
+ $host = trim($host);
+ $MCACHE->addServer($host);
+ }
+ }
+
+ return true;
+}
+
?>