Extract sweep method in Session payload class.

This allows for manually triggering garbage collection in session drivers.
This commit is contained in:
Franz Liedke 2012-08-03 18:09:37 +03:00
parent bc34498a7c
commit 228f57226b
1 changed files with 20 additions and 4 deletions

View File

@ -298,13 +298,29 @@ public function save()
$this->cookie($config); $this->cookie($config);
// Some session drivers implement the Sweeper interface meaning that // Some session drivers implement the Sweeper interface meaning that
// they must clean up expired sessions manually. If the driver is a // they must clean up expired sessions manually. Here we'll calculate
// sweeper, we'll calculate if we need to run garbage collection. // if we need to run garbage collection.
$sweepage = $config['sweepage']; $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));
} }
} }