Cache the LDAP schema in memcache (if memcache is available)

This commit is contained in:
Craig Andrews
2009-12-19 15:10:57 -05:00
parent 4002c18065
commit a43c310fbc
2 changed files with 92 additions and 6 deletions

View File

@@ -67,6 +67,18 @@ class LdapAuthenticationPlugin extends AuthenticationPlugin
throw new Exception("if password_changeable is set, the password attribute and password_encoding must also be specified");
}
}
function onAutoload($cls)
{
switch ($cls)
{
case 'MemcacheSchemaCache':
require_once(INSTALLDIR.'/plugins/LdapAuthentication/MemcacheSchemaCache.php');
return false;
default:
return parent::onAutoload($cls);
}
}
//---interface implementation---//
@@ -175,12 +187,11 @@ class LdapAuthenticationPlugin extends AuthenticationPlugin
}
if($config == null) $this->default_ldap=$ldap;
if (isset($this->schema_cachefile)) {
$cacheConfig = array(
'path' => $this->schema_cachefile,
'max_age' => (isset($this->schema_maxage) ? $this->schema_maxage : 1200 )
);
$cacheObj = new Net_LDAP2_SimpleFileSchemaCache($cacheConfig);
$c = common_memcache();
if (!empty($c)) {
$cacheObj = new MemcacheSchemaCache(
array('c'=>$c,
'cacheKey' => common_cache_key('ldap_schema:' . crc32(serialize($config)))));
$ldap->registerSchemaCache($cacheObj);
}
return $ldap;