source: branches/feature-module-update/data/include/session.inc @ 15079

Revision 15079, 2.0 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type application/x-httpd-php; charset=UTF-8 設定

  • Property svn:mime-type set to application/x-httpd-php; charset=UTF-8
Line 
1<?php
2
3$SESSION_HANDLER_PHP_PATH = realpath( dirname( __FILE__) );
4require_once($SESSION_HANDLER_PHP_PATH ."/../class/SC_Query.php" );
5require_once($SESSION_HANDLER_PHP_PATH ."/../lib/glib.php" );
6
7// セッションの有効期限(秒)
8define("MAX_LIFETIME", 7200);
9
10function sfSessOpen($save_path, $session_name)
11{
12  return true;
13}
14
15function sfSessClose()
16{
17  return true;
18}
19
20// セッション読み込み
21function sfSessRead($id)
22{
23    $objQuery = new SC_Query();
24    $arrRet = $objQuery->select("sess_data", "dtb_session", "sess_id = ?", array($id));
25    return($arrRet[0]['sess_data']);
26}
27
28// セッション書込み
29function sfSessWrite($id, $sess_data)
30{
31    $objQuery = new SC_Query();
32    $count = $objQuery->count("dtb_session", "sess_id = ?", array($id));
33    $sqlval = array();
34    if($count > 0) {
35        // レコード更新
36        $sqlval['sess_data'] = $sess_data;
37        $sqlval['update_date'] = 'Now()';
38        $objQuery->update("dtb_session", $sqlval, "sess_id = ?", array($id));
39    } else {
40        // セッションデータがある場合は、レコード作成
41        if(strlen($sess_data) > 0) {
42            $sqlval['sess_id'] = $id;
43            $sqlval['sess_data'] = $sess_data;
44            $sqlval['update_date'] = 'Now()';       
45            $sqlval['create_date'] = 'Now()';       
46            $objQuery->insert("dtb_session", $sqlval);
47        }
48    }
49    return true;
50}
51
52// セッション破棄
53function sfSessDestroy($id)
54{
55    $objQuery = new SC_Query();
56    $objQuery->delete("dtb_session", "sess_id = ?", array($id));
57    return true;
58}
59
60function sfSessGc($maxlifetime)
61{
62    // ※$maxlifetimeは、利用しない。
63    // MAX_LIFETIME以上更新されていないセッションを削除する。
64    $objQuery = new SC_Query();
65    $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'";
66    $objQuery->delete("dtb_session", $where);
67    return true;
68}
69
70if(sfTabaleExists("dtb_session")) {
71    session_set_save_handler("sfSessOpen", "sfSessClose", "sfSessRead", "sfSessWrite", "sfSessDestroy", "sfSessGc");
72}
73?>
Note: See TracBrowser for help on using the repository browser.