Changeset a2740628 in github


Ignore:
Timestamp:
Oct 2, 2008 3:09:48 AM (5 years ago)
Author:
alecpl <alec@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
Children:
5f660cd
Parents:
4e9349d
Message:
  • improved rcube_sess_gc() when enable_caching=false, also use join() once
File:
1 edited

Legend:

Unmodified
Added
Removed
  • program/include/session.inc

    rcefd1d8 ra2740628  
    129129  } 
    130130 
    131   // get all expired sessions 
    132   $sql_result = $DB->query( 
    133     "SELECT sess_id 
    134      FROM " . get_table_name('session') . " 
    135      WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", 
    136     $maxlifetime); 
     131  if ($rcmail->config->get('enable_caching')) { 
     132    // get all expired sessions 
     133    $sql_result = $DB->query( 
     134        "SELECT sess_id 
     135        FROM " . get_table_name('session') . " 
     136        WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", 
     137        $maxlifetime); 
    137138                                    
    138   $exp_sessions = array(); 
    139   while ($sql_arr = $DB->fetch_assoc($sql_result)) { 
    140     $exp_sessions[] = $sql_arr['sess_id']; 
     139    $exp_sessions = array(); 
     140    while ($sql_arr = $DB->fetch_assoc($sql_result)) { 
     141      $exp_sessions[] = $sql_arr['sess_id']; 
     142    } 
     143 
     144    if (sizeof($exp_sessions)) { 
     145      $exp_sessions = "'" . join("','", $exp_sessions) . "'"; 
     146      // delete session cache records 
     147      $DB->query("DELETE FROM " . get_table_name('cache') . " 
     148            WHERE session_id IN (" . $exp_sessions . ")"); 
     149 
     150      // delete session records 
     151      $DB->query("DELETE FROM " . get_table_name('session') . " 
     152            WHERE sess_id IN (" . $exp_sessions . ")"); 
     153    } 
     154 
     155    // also run message cache GC 
     156    rcmail_message_cache_gc(); 
     157   
     158  } else { 
     159    // just delete all expired sessions 
     160    $DB->query("DELETE FROM " . get_table_name('session') . " 
     161        WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", 
     162        $maxlifetime); 
    141163  } 
    142164 
    143   $caching = $rcmail->config->get('enable_caching'); 
    144  
    145   if (sizeof($exp_sessions)) { 
    146     // delete session cache records 
    147     if ($caching) { 
    148       $DB->query("DELETE FROM " . get_table_name('cache') . " 
    149                   WHERE session_id IN ('".join("','", $exp_sessions)."')"); 
    150     } 
    151  
    152     // delete session records 
    153     $DB->query("DELETE FROM " . get_table_name('session') . " 
    154                 WHERE sess_id IN ('".join("','", $exp_sessions)."')"); 
    155   } 
    156  
    157   // also run message cache GC 
    158   if ($caching) { 
    159     rcmail_message_cache_gc(); 
    160   } 
    161165  rcmail_temp_gc(); 
    162166 
Note: See TracChangeset for help on using the changeset viewer.