The function is located here:
http://api13.cakephp.org/view_source/cake-session/#l-784 

The value passed is the one from the php config,  session.gc_maxlifetime, 
so in my case 3600.


On Wednesday, August 1, 2012 7:58:09 PM UTC+2, cricket wrote:
>
> Where is __gc() called and what value is passed to it? 
>
> On Wed, Aug 1, 2012 at 3:12 AM, Crazy wrote: 
> > I'm having some issues with my sessions. 
> > 
> > It's probably configuration somewhere, but don't know what to 
> change/where 
> > to look. 
> > 
> > I'm using database sessions for my cake application, these sessions are 
> not 
> > getting cleaned up. 
> > 
> > The app in question I have the issue on is an old one written on 1.3.10 
> > running with php version 5.3.5. The garbage collection function in the 
> 2.x 
> > branch is the same so don't think the framework version will matter. 
> > 
> > I've tracked down the issue to the function __gc located in the 
> CakeSession 
> > class and that function is registered there in the php 
> > session_set_save_handler function, this is the function in question: 
> > 
> > /** 
> >  * Helper function called on gc for database sessions. 
> >  * 
> >  * @param integer $expires Timestamp (defaults to current time) 
> >  * @return boolean Success 
> >  * @access private 
> >  */ 
> > function __gc($expires = null) { 
> >     $model =& ClassRegistry::getObject('Session'); 
> > 
> >     if (!$expires) { 
> >         $expires = time(); 
> >     } 
> > 
> >     $return = $model->deleteAll(array($model->alias . ".expires <" => 
> > $expires), false, false); 
> >     return $return; 
> > } 
> > 
> > Now, the comments say that $expires is a timestamp, but this isn't 
> correct 
> > according to the php docs: 
> > 
> > gc($lifetime) 
> > The garbage collector callback is invoked internally by PHP periodically 
> in 
> > order to purge old session data. The frequency is controlled by 
> > session.gc_probability and session.gc_divisor. The value of lifetime 
> which 
> > is passed to this callback can be set in session.gc_maxlifetime. Return 
> > value should be TRUE for success, FALSE for failure. 
> > 
> > The value for $lifeime, so gc_maxlifetime in php.ini is the following: 
> > 
> > ; After this number of seconds, stored data will be seen as 'garbage' 
> and 
> > ; cleaned up by the garbage collection process. 
> > session.gc_maxlifetime = 3600 
> > 
> > So this results in a query that never deletes anything: 
> > 
> > delete from cake_sessions where expires < 3600; 
> > 
> > Could someone clarify what I'm doing wrong or if this is an issue in 
> cake 
> > itself? 
> > 
> > 
> > I've posted this on ask.cakephp.org as well, when I find the answer 
> I'll 
> > make sure to update both locations. 
> > 
> > 
> http://ask.cakephp.org/questions/view/database_sessions_garbage_collection_issue
>  
> > 
> > -- 
> > Our newest site for the community: CakePHP Video Tutorials 
> > http://tv.cakephp.org 
> > Check out the new CakePHP Questions site http://ask.cakephp.org and 
> help 
> > others with their CakePHP related questions. 
> > 
> > 
> > To unsubscribe from this group, send email to 
> > cake-php+unsubscr...@googlegroups.com For more options, visit this 
> group at 
> > http://groups.google.com/group/cake-php 
>

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to