Majidm
10-10-2007, 04:57 PM
Hi all,
We're running VB in a context where we allow users to create private forums for their "groups" of people. Since VB doesn't support "auto deny access UNLESS allowed", we're forced to explicitly deny permissions to every usergroup in existence every time someone creates a group forum. Since creating a forum also implies creating a usergroup (in our setup), we have sort of run into a wall of memory usage. The 'forumscache' array has 279 forums, and the 'forumpermissions' array has 280 members, which results in each of the forums having 280 permissions, i.e. a mega-array with close to 80,000 constituents in it. Of course, this means huge server load and tremendous memory usage (not to mention unserialize() taking FOREVER).
I'm looking at one of the following options - maybe someone could suggest me something alternative too? (I looked at thread prefixes - but the idea is I really want users to have their own private forums that nobody else can see).
a) hacking the permissions system to automatically DENY access if it can't find the correct entry in the 'forumpermission' table (right now, if a user creates a new forum, everybody can automatically view its contents unless I manually INSERT permission 0 for his forumID for EACH usergroup on the site, and I have to do this retroactively every time I create a new usergroup. The 'forumpermission' table has 470,000 entries..... hehe).
b) hacking the forumcache system that it would hit the database every time it needed to access for forumcache->forumpermission[$forumID] - I'm certain it would be faster than parsing a 80,000 object array;
c) --?? some other magical alternative.
Would anybody have any ideas, or hints on a) / b)? I actually don't really know (for now) which parts I'd need to hack - thought I'd throw the question out and start researching after in hopes someone has dealt with this.
Cheers,
-m
We're running VB in a context where we allow users to create private forums for their "groups" of people. Since VB doesn't support "auto deny access UNLESS allowed", we're forced to explicitly deny permissions to every usergroup in existence every time someone creates a group forum. Since creating a forum also implies creating a usergroup (in our setup), we have sort of run into a wall of memory usage. The 'forumscache' array has 279 forums, and the 'forumpermissions' array has 280 members, which results in each of the forums having 280 permissions, i.e. a mega-array with close to 80,000 constituents in it. Of course, this means huge server load and tremendous memory usage (not to mention unserialize() taking FOREVER).
I'm looking at one of the following options - maybe someone could suggest me something alternative too? (I looked at thread prefixes - but the idea is I really want users to have their own private forums that nobody else can see).
a) hacking the permissions system to automatically DENY access if it can't find the correct entry in the 'forumpermission' table (right now, if a user creates a new forum, everybody can automatically view its contents unless I manually INSERT permission 0 for his forumID for EACH usergroup on the site, and I have to do this retroactively every time I create a new usergroup. The 'forumpermission' table has 470,000 entries..... hehe).
b) hacking the forumcache system that it would hit the database every time it needed to access for forumcache->forumpermission[$forumID] - I'm certain it would be faster than parsing a 80,000 object array;
c) --?? some other magical alternative.
Would anybody have any ideas, or hints on a) / b)? I actually don't really know (for now) which parts I'd need to hack - thought I'd throw the question out and start researching after in hopes someone has dealt with this.
Cheers,
-m