Re: [Phplib-users] Strange session problem
Brought to you by:
nhruby,
richardarcher
From: nathan r. h. <na...@ds...> - 2002-03-18 17:25:19
|
I hope sthat's a really high traffic site to require spliting into multiple physical servers. I think it might be overkill but.. what the hey :) If you're looking for speed, use a shmem partition for session data. Super fast and if done correctly, the removal of the session data shouldn't be an issue becasue all your sessions would have closed with the server shutdown :) (eg: use the user object instead of regurgitating old sessions or setting a session life time for some unreasonable anout of time) Anyway, this is an age old problem that lives in php and conneciton pooliing, the answer is to have different username / apssword paris for each different database you wish to access. You could also poll the correct db, before page_close() but that's (as stated before) a hack. -n ------ nathan hruby na...@ds... ------ On Sat, 16 Mar 2002, Carl Youngblood wrote: > I've been hosting a site with a hosting service that only let me use one > database. Now I'm trying to get this site running on my home windows > machine using FoxServ (a combination PHP/MySQL install package for Windows). > In anticipation of future database fragmentation, I've split my session > table into a separate database. When this site goes live commercially I > intend to have multiple database servers and probably one that is dedicated > to session data. So my session classes look like this: > > class SessionDB extends DB_Sql > { > var $Host = 'localhost'; > var $Database = 'session'; > var $User = 'myusername'; > var $Password = 'mypassword'; > } > > class Bank_CT_Sql extends CT_Sql > { > var $database_class = 'SessionDB'; ## Which database to > connect... > var $database_table = 'active_sessions'; ## and find our session > data in this table. > } > > class Bank_Session extends Session > { > var $classname = 'Bank_Session'; > > var $cookiename = ''; ## defaults to > classname > var $magic = 'Umuarama'; ## ID seed > var $mode = 'get'; ## We propagate session > IDs with cookies > var $fallback_mode = 'get'; > var $allowcache = 'no'; > var $lifetime = 259200; ## 0 = do session > cookies, else minutes > var $that_class = 'Bank_CT_Sql'; ## name of data storage > container > var $gc_probability = 25; > var $gc_time = 720; > var $auto_init = '../include/setup.inc'; > } > > But when I try to log in I get an error message on the login form page that > displays after the login form itself. It says: > > Database error: Invalid SQL: update active_sessions set > val='QmFua19TZXNzaW9uOiR0aGlzLT5pbiA9ICcnOyAkdGhpcy0+cHQgPSBhcnJheSgpOyAkdGh > pcy0+cHRbJ2F1dGgnXSA9ICcxJzsgJHRoaXMtPnB0WydjaGFsbGVuZ2UnXSA9ICcxJzsgJEdMT0J > BTFNbJ2F1dGgnXSA9IG5ldyBCYW5rX0NoYWxsZW5nZV9BdXRoOyAkR0xPQkFMU1snYXV0aCddLT5 > hdXRoID0gYXJyYXkoKTsgJEdMT0JBTFNbJ2F1dGgnXS0+YXV0aFsndWlkJ10gPSAnZm9ybSc7ICR > HTE9CQUxTWydhdXRoJ10tPmF1dGhbJ3Blcm0nXSA9ICcnOyAkR0xPQkFMU1snYXV0aCddLT5hdXR > oWydleHAnXSA9ICcyMTQ3NDgzNjQ3JzsgJEdMT0JBTFNbJ2F1dGgnXS0+YXV0aFsncmVmcmVzaCd > dID0gJzIxNDc0ODM2NDcnOyAkR0xPQkFMU1snY2hhbGxlbmdlJ10gPSAnZDljNTg3YTQ4YzkwMjA > wMDU5M2Y1MGUxMTYyNTEwNzEnOyA=', changed='20020316202455' where > sid='7c2d54a5282d1bc17c8ec19d28b662a7' and name='Bank_Session' > MySQL Error: 1146 (Table 'bank_user.active_sessions' doesn't exist) > Session halted. > > It looks like it is trying to save session info in the wrong database. But > I put some debugging code into ct_sql.inc at line 97 just before the query > tries to get executed to see what database name and host the class is > actually set to. It is set to "session" and not "bank_user" (which is > another database on the server). Is this a problem in phplib or in php > itself? It seems really strange that the DB_Sql class would try to connect > to the wrong database. > > Any ideas or help would be greatly appreciated. > > Thanks, > Carl Youngblood > > > _______________________________________________ > Phplib-users mailing list > Php...@li... > https://lists.sourceforge.net/lists/listinfo/phplib-users > |