Пример #1
0
 /**
  * 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;
 }