Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Introducing $MCACHE - Memory-based cache

$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.
  • Loading branch information...
commit 419e1d937ee9f1351be2e6882a93016f08abec2a 1 parent c96a4a4
martinlanghoff authored
Showing with 35 additions and 0 deletions.
  1. +10 −0 lib/setup.php
  2. +25 −0 lib/setuplib.php
View
10 lib/setup.php
@@ -44,6 +44,10 @@
* @global object(session) $SESSION
*/
global $SESSION;
+/**
+ * Definition of shared memory cache
+ */
+global $MCACHE;
/**
* Definition of course type
* @global object(course) $COURSE
@@ -251,6 +255,12 @@
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)) {
View
25 lib/setuplib.php
@@ -209,4 +209,29 @@ function setup_is_unicodedb() {
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;
+}
+
?>
Please sign in to comment.
Something went wrong with that request. Please try again.