* Portions created by the Initial Developer are Copyright (C) 2008-2024 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Mark J Crane * Tim Fry */ /** * Description of session * * @author Tim Fry */ class session { /** * Removes old php session files. Called by the maintenance application. * @param settings $settings A settings object * @return void */ public static function filesystem_maintenance(settings $settings): void { $retention_days = $settings->get('session', 'filesystem_retention_days', ''); if (!empty($retention_days) && is_numeric($retention_days)) { //get the session location if (session_status() === PHP_SESSION_ACTIVE) { //session should not normally be running already in a service $session_location = session_save_path(); } else { //session has to be started to get the path session_start(); $session_location = session_save_path(); session_destroy(); } //loop through all files and check the modified time $files = glob($session_location . '/sess_*'); foreach ($files as $file) { if (maintenance_service::days_since_modified($file) > $retention_days) { //remove old file if (unlink($file)) { maintenance_service::log_write(self::class, "Removed old session file $file"); } else { maintenance_service::log_write(self::class, "Unable to remove old session file $file", null, maintenance_service::LOG_ERROR); } } } } } }