Merge pull request #1051 from franzliedke/patch-30

[Session] Trigger garbage collection (sweep) manually
This commit is contained in:
Taylor Otwell 2012-09-01 17:47:45 -07:00
commit b3319f5d36
1 changed files with 20 additions and 4 deletions

View File

@ -298,13 +298,29 @@ public function save()
$this->cookie($config);
// Some session drivers implement the Sweeper interface meaning that
// they must clean up expired sessions manually. If the driver is a
// sweeper, we'll calculate if we need to run garbage collection.
// they must clean up expired sessions manually. Here we'll calculate
// if we need to run garbage collection.
$sweepage = $config['sweepage'];
if ($this->driver instanceof Sweeper and (mt_rand(1, $sweepage[1]) <= $sweepage[0]))
if (mt_rand(1, $sweepage[1]) <= $sweepage[0])
{
$this->driver->sweep(time() - ($config['lifetime'] * 60));
$this->sweep();
}
}
/**
* Clean up expired sessions.
*
* If the session driver is a sweeper, it must clean up expired sessions
* from time to time. This method triggers garbage collection.
*
* @return void
*/
public function sweep()
{
if ($this->driver instanceof Sweeper)
{
$this->driver->sweep(time() - (Config::get('session.lifetime') * 60));
}
}