From bf26b35c884ce8df6500bcd7ad6dc78bf79d3b3c Mon Sep 17 00:00:00 2001 From: Henning Leutz <leutz@pcsg.de> Date: Tue, 5 Jul 2016 08:58:46 +0200 Subject: [PATCH] chore: Neuer Cron -> Session cleanup --- cron.xml | 15 +++++++++++---- src/QUI/Cron/QuiqqerCrons.php | 28 ++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/cron.xml b/cron.xml index 9403121..c315c5c 100644 --- a/cron.xml +++ b/cron.xml @@ -5,6 +5,11 @@ <description>Ordner für temporäre Daten leeren</description> </cron> + <cron exec="\QUI\Cron\QuiqqerCrons::clearSessions"> + <title>Sessions säubern</title> + <description>Löscht unnötige / abgelaufene Session Dateien</description> + </cron> + <cron exec="\QUI\Cron\QuiqqerCrons::clearCache"> <title>Cache leeren</title> <description>Kompletten Cache leeren</description> @@ -13,8 +18,10 @@ <cron exec="\QUI\Cron\QuiqqerCrons::clearAdminMediaCache"> <title>Media Cache der Administration leeren</title> <description> - Leert die Cachebilder von der Administration.<br /> - Dies sind zum Beispiel die Vorschaubilder in der Administration.<br /> + Leert die Cachebilder von der Administration. + <br/> + Dies sind zum Beispiel die Vorschaubilder in der Administration. + <br/> Der öffentliche Mediacache wird nicht geleert </description> </cron> @@ -32,8 +39,8 @@ Durchsucht das Projekt und aktiviert oder deaktiviert Seiten je nach Veröffentlichungsdatum. </description> <params> - <param name="project" type="string" /> - <param name="lang" type="string" /> + <param name="project" type="string"/> + <param name="lang" type="string"/> </params> </cron> diff --git a/src/QUI/Cron/QuiqqerCrons.php b/src/QUI/Cron/QuiqqerCrons.php index 83737ea..38001e4 100644 --- a/src/QUI/Cron/QuiqqerCrons.php +++ b/src/QUI/Cron/QuiqqerCrons.php @@ -48,6 +48,34 @@ class QuiqqerCrons QUI\Utils\System\File::unlink(VAR_DIR . 'cache/admin/media/'); } + /** + * delete all unwanted / unneeded sessions + */ + public static function clearSessions() + { + // clear nativ session storage + $sessionDir = VAR_DIR . 'sessions/'; + + if (!is_dir($sessionDir)) { + return; + } + + $sessionFiles = QUI\Utils\System\File::readDir($sessionDir); + $maxtime = 1400; + + if (QUI::conf('session', 'max_life_time')) { + $maxtime = (int)QUI::conf('session', 'max_life_time'); + } + + foreach ($sessionFiles as $sessionFile) { + $fmtime = filemtime($sessionDir . $sessionFile); + + if ($fmtime + $maxtime < time()) { + unlink($sessionDir . $sessionFile); + } + } + } + /** * Check project sites release dates * Activate or deactivate sites -- GitLab