From a43c310fbcbe91fe849a2e14fdabd9824be7dbfe Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 19 Dec 2009 15:10:57 -0500 Subject: Cache the LDAP schema in memcache (if memcache is available) --- .../LdapAuthenticationPlugin.php | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'plugins/LdapAuthentication/LdapAuthenticationPlugin.php') diff --git a/plugins/LdapAuthentication/LdapAuthenticationPlugin.php b/plugins/LdapAuthentication/LdapAuthenticationPlugin.php index 0ce08bd78..39967fe42 100644 --- a/plugins/LdapAuthentication/LdapAuthenticationPlugin.php +++ b/plugins/LdapAuthentication/LdapAuthenticationPlugin.php @@ -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; -- cgit v1.2.3-54-g00ecf