select("sess_data", "dtb_session", "sess_id = ?", array($id)); return($arrRet[0]['sess_data']); } // セッション書込み function sfSessWrite($id, $sess_data) { $objQuery = new SC_Query(); $count = $objQuery->count("dtb_session", "sess_id = ?", array($id)); $sqlval = array(); if($count > 0) { // レコード更新 $sqlval['sess_data'] = $sess_data; $sqlval['update_date'] = 'Now()'; $objQuery->update("dtb_session", $sqlval, "sess_id = ?", array($id)); } else { // セッションデータがある場合は、レコード作成 if(strlen($sess_data) > 0) { $sqlval['sess_id'] = $id; $sqlval['sess_data'] = $sess_data; $sqlval['update_date'] = 'Now()'; $sqlval['create_date'] = 'Now()'; $objQuery->insert("dtb_session", $sqlval); } } return true; } // セッション破棄 function sfSessDestroy($id) { $objQuery = new SC_Query(); $objQuery->delete("dtb_session", "sess_id = ?", array($id)); return true; } function sfSessGc($maxlifetime) { // ※$maxlifetimeは、利用しない。 // MAX_LIFETIME以上更新されていないセッションを削除する。 $objQuery = new SC_Query(); $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'"; $objQuery->delete("dtb_session", $where); return true; } if(sfTabaleExists("dtb_session")) { session_set_save_handler("sfSessOpen", "sfSessClose", "sfSessRead", "sfSessWrite", "sfSessDestroy", "sfSessGc"); } ?>