Ignore:
Timestamp:
2014/10/14 12:07:56 (9 years ago)
Author:
kim
Message:

#2565 r23491 r23493 をリバート

既存関数の削除が影響が大き為、2.13.3では見送り、後方互換をがはいれば、2.13.4では採用を検討

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13_3/data/class/SC_SessionFactory.php

    r23605 r23655  
    8686    public function initSession() 
    8787    { 
    88         session_set_save_handler(array(&$this, 'sfSessOpen'), 
    89             array(&$this, 'sfSessClose'), 
    90             array(&$this, 'sfSessRead'), 
    91             array(&$this, 'sfSessWrite'), 
    92             array(&$this, 'sfSessDestroy'), 
    93             array(&$this, 'sfSessGc')); 
    94  
    95         // 通常よりも早い段階(オブジェクトが破棄される前)でセッションデータを書き込んでセッションを終了する 
    96         // XXX APC による MDB2 の破棄タイミングによる不具合を回避する目的 
    97         register_shutdown_function('session_write_close'); 
    9888    } 
    9989 
     
    10696    { 
    10797    } 
    108  
    109     /** 
    110      * セッションを開始する. 
    111      * 
    112      * @param  string $save_path    セッションを保存するパス(使用しない) 
    113      * @param  string $session_name セッション名(使用しない) 
    114      * @return bool   セッションが正常に開始された場合 true 
    115      */ 
    116     public function sfSessOpen($save_path, $session_name) 
    117     { 
    118         return true; 
    119     } 
    120  
    121     /** 
    122      * セッションを閉じる. 
    123      * 
    124      * @return bool セッションが正常に終了した場合 true 
    125      */ 
    126     public function sfSessClose() 
    127     { 
    128         return true; 
    129     } 
    130  
    131     /** 
    132      * セッションのデータをDBから読み込む. 
    133      * 
    134      * @param  string $id セッションID 
    135      * @return string セッションデータの値 
    136      */ 
    137     public function sfSessRead($id) 
    138     { 
    139         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    140         $arrRet = $objQuery->select('sess_data', 'dtb_session', 'sess_id = ?', array($id)); 
    141         if (empty($arrRet)) { 
    142             return ''; 
    143         } else { 
    144             return $arrRet[0]['sess_data']; 
    145         } 
    146     } 
    147  
    148     /** 
    149      * セッションのデータをDBに書き込む. 
    150      * 
    151      * @param  string $id        セッションID 
    152      * @param  string $sess_data セッションデータの値 
    153      * @return bool   セッションの書き込みに成功した場合 true 
    154      */ 
    155     public function sfSessWrite($id, $sess_data) 
    156     { 
    157         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    158         $exists = $objQuery->exists('dtb_session', 'sess_id = ?', array($id)); 
    159         $sqlval = array(); 
    160         if ($exists) { 
    161             // レコード更新 
    162             $sqlval['sess_data'] = $sess_data; 
    163             $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
    164             $objQuery->update('dtb_session', $sqlval, 'sess_id = ?', array($id)); 
    165         } else { 
    166             // セッションデータがある場合は、レコード作成 
    167             if (strlen($sess_data) > 0) { 
    168                 $sqlval['sess_id'] = $id; 
    169                 $sqlval['sess_data'] = $sess_data; 
    170                 $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
    171                 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 
    172                 $objQuery->insert('dtb_session', $sqlval); 
    173             } 
    174         } 
    175  
    176         return true; 
    177     } 
    178  
    179     // セッション破棄 
    180  
    181     /** 
    182      * セッションを破棄する. 
    183      * 
    184      * @param  string $id セッションID 
    185      * @return bool   セッションを正常に破棄した場合 true 
    186      */ 
    187     public function sfSessDestroy($id) 
    188     { 
    189         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    190         $objQuery->delete('dtb_session', 'sess_id = ?', array($id)); 
    191  
    192         return true; 
    193     } 
    194  
    195     /** 
    196      * ガーベジコレクションを実行する. 
    197      * 
    198      * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する. 
    199      * 
    200      * @param integer $maxlifetime セッションの有効期限(使用しない) 
    201      * @return bool 
    202      */ 
    203     public function sfSessGc($maxlifetime) 
    204     { 
    205         // MAX_LIFETIME以上更新されていないセッションを削除する。 
    206         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    207         $limit = date("Y-m-d H:i:s", time() - MAX_LIFETIME); 
    208         $where = "update_date < '". $limit . "' "; 
    209         $objQuery->delete('dtb_session', $where); 
    210  
    211         return true; 
    212     } 
    21398} 
    21499/* 
Note: See TracChangeset for help on using the changeset viewer.