- Timestamp:
- 2014/10/14 12:07:56 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13_3/data/class/SC_SessionFactory.php
r23605 r23655 86 86 public function initSession() 87 87 { 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');98 88 } 99 89 … … 106 96 { 107 97 } 108 109 /**110 * セッションを開始する.111 *112 * @param string $save_path セッションを保存するパス(使用しない)113 * @param string $session_name セッション名(使用しない)114 * @return bool セッションが正常に開始された場合 true115 */116 public function sfSessOpen($save_path, $session_name)117 {118 return true;119 }120 121 /**122 * セッションを閉じる.123 *124 * @return bool セッションが正常に終了した場合 true125 */126 public function sfSessClose()127 {128 return true;129 }130 131 /**132 * セッションのデータをDBから読み込む.133 *134 * @param string $id セッションID135 * @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 セッションID152 * @param string $sess_data セッションデータの値153 * @return bool セッションの書き込みに成功した場合 true154 */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 セッションID185 * @return bool セッションを正常に破棄した場合 true186 */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 bool202 */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 }213 98 } 214 99 /*
Note: See TracChangeset
for help on using the changeset viewer.