/** * Session Garbage Collector. * * Removes the current session, if: * a) gc probability is reached (ini_set) * b) time() is reached (DB has timestamp stored, that is time() + expiration ) * * @see session.gc_divisor 100 * @see session.gc_maxlifetime 1800 = 30*60 * @see session.gc_probability 1 * @usage execution rate 1/100 (session.gc_probability/session.gc_divisor) * * @param int session life time (mins) * * @return null|bool */ public function gc($maxlifetime = 30) { if ($maxlifetime === 0) { return; } /* * Determine expiration time of the session * * $maxlifetime is a minute time value * its fetched from $config['session']['session_expire_time'] * $sessionLifetime is in seconds */ $sessionlifetime = $maxlifetime * 60; $expire_time = time() + $sessionlifetime; $em = \Clansuite\Application::getEntityManager(); $query = $em->createQuery('DELETE \\Entity\\Session s WHERE s.session_name = :name AND s.session_starttime < :time'); $query->setParameters(['name' => self::SESSION_NAME, 'time' => (int) $expire_time]); $query->execute(); return true; }