Cache the LDAP schema in memcache (if memcache is available)
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user