From 5a8fdeaebfd3df19fdffa992c3661c102f089aa7 Mon Sep 17 00:00:00 2001 From: JediKev <kevin@enhancesoft.com> Date: Wed, 19 Jul 2017 16:48:01 -0500 Subject: [PATCH] cron: Delete Expired Sessions This addresses an issue where expired sessions would not be removed from the database. This caused the session table to fill up and create unnecessary issues. This adds a cleanup method to remove all expired sessions from the database. --- include/class.cron.php | 6 ++++++ include/class.ostsession.php | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/include/class.cron.php b/include/class.cron.php index e545c5afb..232d6bf2b 100644 --- a/include/class.cron.php +++ b/include/class.cron.php @@ -51,6 +51,11 @@ class Cron { AttachmentFile::deleteOrphans(); } + function CleanExpiredSessions() { + require_once(INCLUDE_DIR.'class.ostsession.php'); + DbSessionBackend::cleanup(); + } + function MaybeOptimizeTables() { // Once a week on a 5-minute cron $chance = rand(1,2000); @@ -100,6 +105,7 @@ class Cron { self::MailFetcher(); self::TicketMonitor(); self::PurgeLogs(); + self::CleanExpiredSessions(); // Run file purging about every 10 cron runs if (mt_rand(1, 9) == 4) self::CleanOrphanedFiles(); diff --git a/include/class.ostsession.php b/include/class.ostsession.php index dbb5cf631..51f8bd2fc 100644 --- a/include/class.ostsession.php +++ b/include/class.ostsession.php @@ -158,6 +158,10 @@ abstract class SessionBackend { return $this->update($id, $i['touched'] ? session_encode() : $data); } + function cleanup() { + $this->gc(0); + } + abstract function read($id); abstract function update($id, $data); abstract function destroy($id); @@ -220,6 +224,10 @@ extends SessionBackend { return SessionData::objects()->filter(['session_id' => $id])->delete(); } + function cleanup() { + self::gc(0); + } + function gc($maxlife){ SessionData::objects()->filter([ 'session_expire__lte' => SqlFunction::NOW() -- GitLab