From: <lph...@us...> - 2010-12-08 19:48:50
|
Revision: 31299 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=31299&view=rev Author: lphuberdeau Date: 2010-12-08 19:48:44 +0000 (Wed, 08 Dec 2010) Log Message: ----------- [MOD] Reset the internal caches when they become too big Modified Paths: -------------- trunk/lib/core/Perms/ResolverFactory/CategoryFactory.php trunk/lib/core/Perms/ResolverFactory/ObjectFactory.php trunk/lib/core/Perms.php Modified: trunk/lib/core/Perms/ResolverFactory/CategoryFactory.php =================================================================== --- trunk/lib/core/Perms/ResolverFactory/CategoryFactory.php 2010-12-08 19:36:51 UTC (rev 31298) +++ trunk/lib/core/Perms/ResolverFactory/CategoryFactory.php 2010-12-08 19:48:44 UTC (rev 31299) @@ -91,6 +91,12 @@ $objects = array(); $keys = array(); + // Reset the internal object cache when it becomes too large + // Leave the internal category cache intact as it should eventually stabilize + if (count($this->knownObjects) > 128) { + $this->knownObjects = array(); + } + foreach( $values as $v ) { $key = $this->objectKey( array_merge( $baseContext, array( 'object' => $v ) ) ); Modified: trunk/lib/core/Perms/ResolverFactory/ObjectFactory.php =================================================================== --- trunk/lib/core/Perms/ResolverFactory/ObjectFactory.php 2010-12-08 19:36:51 UTC (rev 31298) +++ trunk/lib/core/Perms/ResolverFactory/ObjectFactory.php 2010-12-08 19:48:44 UTC (rev 31299) @@ -31,6 +31,11 @@ $objects = array(); $hashes = array(); + // Limit the amount of hashes preserved to reduce memory consumption + if (count($this->known) > 128) { + $this->known = array(); + } + foreach( $values as $v ) { $hash = $this->getHash( array_merge( $baseContext, array( 'object' => $v ) ) ); if( ! isset( $this->known[$hash] ) ) { Modified: trunk/lib/core/Perms.php =================================================================== --- trunk/lib/core/Perms.php 2010-12-08 19:36:51 UTC (rev 31298) +++ trunk/lib/core/Perms.php 2010-12-08 19:48:44 UTC (rev 31299) @@ -313,6 +313,11 @@ $resolver = false; } + // Limit the amount of hashes preserved to reduce memory consumption + if (count($this->hashes) > 128) { + $this->hashes = array(); + } + foreach( $toSet as $hash ) { $this->hashes[$hash] = $resolver; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |