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
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to