diff --git a/cron.xml b/cron.xml index 94031212a4cc6e8c1809de5e6fc8cfc04849fe70..c315c5c209ee21f1497631f94eafa7a982895a97 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 83737ea762bbf23f7090e99ed9d7f8198cb97931..38001e42fcb169106fe9f989eead797774e87c18 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