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