alecpl
2010-10-08 ca1f564598614f62fa8b210c414a919491176865
- Performance fix for case when session_lifetime=0, fixed indentation


1 files modified
23 ■■■■■ changed files
program/include/rcube_session.php 23 ●●●●● patch | view | raw | blame | history
program/include/rcube_session.php
@@ -91,7 +91,7 @@
    return false;
  }
  // save session data
  public function write($key, $vars)
@@ -105,7 +105,7 @@
    } else { // else read data again from DB
      $oldvars = $this->read($key);
    }
    if ($oldvars !== false) {
      $a_oldvars = $this->unserialize($oldvars); 
      foreach ((array)$this->unsets as $k)
@@ -114,25 +114,28 @@
      $newvars = $this->serialize(array_merge(
        (array)$a_oldvars, (array)$this->unserialize($vars)));
      if ($this->keep_alive>0) {
    $timeout = min($this->lifetime * 0.5,
               $this->lifetime - $this->keep_alive);
      if (!$this->lifetime) {
        $timeout = 600;
      }
      else if ($this->keep_alive>0) {
        $timeout = min($this->lifetime * 0.5,
          $this->lifetime - $this->keep_alive);
      } else {
    $timeout = 0;
        $timeout = 0;
      }
      if (!($newvars === $oldvars) || ($ts - $this->changed > $timeout)) {
        $this->db->query(
      sprintf("UPDATE %s SET vars = ?, changed = %s WHERE sess_id = ?",
        get_table_name('session'), $now),
      $newvars, $key);
          sprintf("UPDATE %s SET vars = ?, changed = %s WHERE sess_id = ?",
            get_table_name('session'), $now),
          $newvars, $key);
      }
    }
    else {
      $this->db->query(
        sprintf("INSERT INTO %s (sess_id, vars, ip, created, changed) ".
          "VALUES (?, ?, ?, %s, %s)",
      get_table_name('session'), $now, $now),
          get_table_name('session'), $now, $now),
        $key, $vars, (string)$_SERVER['REMOTE_ADDR']);
    }