综合干狼人综合首页,日本а中文在线天堂,中国av一区,日韩va亚洲va欧洲va国产

27
2017/02

如何使用數(shù)據(jù)庫設置存儲session數(shù)據(jù)

發(fā)布時間:2017-02-27 13:24:05
發(fā)布者:xiangpeiyu
瀏覽量:
0

     PHP中的session有效期默認是1440秒(24分鐘),也就是說,客戶端超過24分鐘沒有刷新,當前session就會失效。很明顯,這是不能滿足需要的。 一個已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存儲到數(shù)據(jù)庫,這樣可以通過SQL語句來刪除所有過期的session,精確地控制session的有效期。這也是基于PHP的大型網站常用的方法。那么接下來將具體講解如何使用session_set_save_handler;

     session_set_save_handler---設置用戶級 session 存儲函數(shù)

     函數(shù)原型 void session_set_save_handler (string open, string close, string read, string write, string destroy, string gc) 

     session_set_save_handler() 設置用戶級 session 存儲函數(shù),用于存儲和取回 session 相關的數(shù)據(jù). 用于那些使用不同于 PHP Session 指定的存儲方式的情況.

     例如,在本地數(shù)據(jù)庫存儲 session 數(shù)據(jù). 注意: 你必須設置 php.ini 里面的 session.save_handler配置參數(shù)來讓 session_set_save_handler() 正常工作.默認配置是

session.save_handler = files, 如果想要使用自定義的處理器(如基于數(shù)據(jù)庫的處理器),可用"user"。

              函數(shù)原型 void session_set_save_handler (string open, string close, string read, string write, string destroy, string gc) 

             下面介紹該函數(shù)的每個參數(shù)的意義 ,每個參數(shù)都是一個回調函數(shù),否則沒意義:

             string open  在運行session_start()時執(zhí)行。

             string close  在腳本執(zhí)行完成或調用session_write_close() 或 session_destroy()時被執(zhí)行,即在所有session操作完后被執(zhí)行。

             string read  在運行session_start()時執(zhí)行,因為在session_start時,會去read當前session數(shù)據(jù)。

             string write  此函數(shù)在腳本結束和使用session_write_close()強制提交SESSION數(shù)據(jù)時執(zhí)行。

             string destroy  在運行session_destroy()時執(zhí)行即銷毀一個會話中的全部數(shù)據(jù)時執(zhí)行。

             string gc 執(zhí)行概率由session.gc_probability 和 session.gc_divisor的值決定,時機是在open,read之后,session_start會相繼執(zhí)行open,read和gc。

           備注:session.gc_probability = 1

                     session.gc_divisor = 100 

                     定義在每次初始化會話時,啟動垃圾回收程序的概率。 這個收集概率計算公式如下:session.gc_probability/session.gc_divisor 對會話頁面訪問越頻繁,概率就應當越小。建議值為1/1000~5000。

                    以下,則是具體的簡單應用:


$session_mysql_conn = null;  

$session_mysql_host = "127.0.0.1";  

$session_mysql_user = "root";  

$session_mysql_pwd = "root";  

$session_mysql_db = "session";   


  

$session_mysql_flag = false;  

function open($save_path, $session_name)  

{  

    global $session_mysql_host;  

    global $session_mysql_user;  

    global $session_mysql_pwd;  

    global $session_mysql_db;  

      

    if(null == $session_mysql_host   

            || null == $session_mysql_user  

            || null == $session_mysql_db)  

        return false;  

      

    global $session_mysql_conn;  

      

    $session_mysql_conn = mysql_connect($session_mysql_host, $session_mysql_user, $session_mysql_pwd);  

      

    if(false == $session_mysql_conn)  

        return (false);  

      

    if(false == mysql_select_db($session_mysql_db, $session_mysql_conn))  

    {  

        mysql_close($session_mysql_conn);  

        $session_mysql_conn = null;  

        return (false);  

    }  

      

    return(true);  

}  

  

function close()  

{  

    return(true);  

}  

  

function read($id)  

{  

    global $session_mysql_conn;  

    if(null == $session_mysql_conn)  

        return null;  

      

    $select_sql = "select value from session where id = '$id'";  

    $result = mysql_query($select_sql, $session_mysql_conn);  

    if(false == $result)  

        return null;  

      

    if(0 == mysql_num_rows($result))  

        return null;  

      

    $row = mysql_fetch_row($result);  

    if(empty($row))  

        return null;  

      

    $res = $row[0];  

    mysql_free_result($result);  

      

    //echo "session_mysql_read:$id = $res
";  

      

    return $res;  

}  

  

function write($id, $sess_data)  

{  

    //echo "session_mysql_write $id = $sess_data
";  

      

    global $session_mysql_conn;  

    global $session_mysql_flag;  

      

    if(null == $session_mysql_conn)  

        return false;  

  

    $value = mysql_real_escape_string($sess_data);  

    $write_sql="update session set value = '$value' where id = '$id'";  

    if(false == $session_mysql_flag)  

    {  

        $select_sql = "select count(id) from session where id = '$id'";  

        $result = mysql_query($select_sql, $session_mysql_conn);  

          

        if(false == $result)  

            return false;  

          

        $row = mysql_fetch_row($result);  

          

        if(empty($row))  

            return false;  

          

        if($row[0] == 0)  

        {  

            $write_sql="insert into session (id,value) values ('$id', '$value')";  

        }  

        else  

        {  

            $session_mysql_flag = true;  

        }  

    }  

    return mysql_query($write_sql, $session_mysql_conn);  

}  

  

function destroy($id)  

{  

    global $session_mysql_conn;  

  

    if(null == $session_mysql_conn)  

        return false;  

      

    mysql_close($session_mysql_conn);  

    $session_mysql_conn = null;  

}  

  

function gc($maxlifetime)  

{  

    global $session_mysql_conn;  

    if(null == $session_mysql_conn)  

        return false;  

      

    $t = time() - $maxlifetime;  

    $d = date("Y-m-d h:i:s",$t);  

    $delete_sql = "delete from session where ctime < '$d'";  

      

    return mysql_query($delete_sql, $session_mysql_conn);  

}  

  

function set_session_mysql($s_mysql_host, $s_mysql_user, $s_mysql_pwd, $s_mysql_db)  

{  

    global $session_mysql_host;  

    global $session_mysql_user;  

    global $session_mysql_pwd;  

    global $session_mysql_db;  

      

    $session_mysql_host = $s_mysql_host;  

    $session_mysql_user = $s_mysql_user;  

    $session_mysql_pwd = $s_mysql_pwd;  

    $session_mysql_db = $s_mysql_db;  

    session_module_name('user');

    session_set_save_handler("open", "close", "read", "write", "destroy", "gc");      

}  



set_session_mysql("127.0.0.1","root","root","session");


session_start();

$_SESSION['A']="AAA";

$_SESSION['B']="AAA";

$_SESSION['C']="AAA";


?>  

數(shù)據(jù)庫中的表結構:

/* 

 * usage as: 

* 

* date_default_timezone_set("PRC"); 

* set_session_mysql("localhost:3306", "root", "", "db"); 

* session_start(); 

 

* #session table 

 

CREATE TABLE `session` ( 

  `id` varchar(100) NOT NULL DEFAULT '', 

  `value` mediumblob NOT NULL, 

  `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURREN    T_TIMESTAMP, 

  PRIMARY KEY (`id`) 

) ENGINE=MyISAM DEFAULT CHARSET=utf8;  

*/ 


返回列表
综合干狼人综合首页,日本а中文在线天堂,中国av一区,日韩va亚洲va欧洲va国产
国产精品毛片高清在线完整版| 国产伦理精品不卡| 亚洲欧美中文字幕在线一区| 中文字幕一精品亚洲无线一区| 一区二区三区日韩精品| 国产一区二区三区精品视频| 亚洲精品在线观看网站| 日韩精品在线电影| 欧美国产丝袜视频| 精品一区二区国语对白| 亚洲欧洲午夜一线一品| 久久精品网站免费观看| 欧美一级黄色录像| 国产欧美日韩三级| 久久九九国产精品| 91精品国产高清一区二区三区蜜臀| 久久综合色天天久久综合图片| 色综合久久天天| 日韩欧美精品免费在线| 久久99国产精品久久| 中文字幕精品www乱入免费视频| 天天色综合成人网| 亚洲精品456在线播放狼人| 欧美日韩和欧美的一区二区| 亚洲国产精品热久久| 久久蜜桃av一区精品变态类天堂| 欧美激情一区在线| 久久精品夜色噜噜亚洲aⅴ| 欧美丰满美乳xxx高潮www| 亚洲国产精彩中文乱码av在线播放| 亚洲精品菠萝久久久久久久| 国产一区二区在线观看免费| 亚洲欧洲精品天堂一级| 在线精品视频一区二区三四| 国产伦理精品不卡| 狠狠爱在线视频一区| 欧美精品一区二区久久久| 精品视频在线导航| 国产欧美一区二区在线| 国产精品视频一二三| 国产精品婷婷午夜在线观看| 亚洲欧洲精品天堂一级| 日韩视频免费观看高清完整版在线观看| 日韩欧美国产不卡| 亚洲成人动漫在线播放| 亚洲一区二区免费视频| 国产成人精品亚洲日本在线桃色| 亚洲精品aⅴ中文字幕乱码| 日韩成人黄色av| 日韩久久免费视频| 午夜日韩在线观看| 午夜视频在线观看一区| 亚洲制服丝袜在线| 欧美一区二区三区视频免费播放| 欧美激情一区二区| 欧美日韩国产美女| 中文字幕久久亚洲| 中文日韩在线视频| 久久九九影视网| 一二三四区精品视频| 国产九九视频一区二区三区| 中文字幕亚洲在| 91精品国产色综合久久不卡蜜臀| 国内精品久久久久影院色| 亚洲精品午夜精品| 国产精品一区免费在线观看| 激情五月激情综合网| 国产亚洲女人久久久久毛片| 亚洲精品乱码久久久久| 91久久国产综合久久| 天天综合网 天天综合色| 日韩久久午夜影院| 亚洲国产精品99| 国产精品一区久久久久| 国产午夜精品久久久久久免费视| 亚洲成av人片一区二区| 欧美一级在线免费| 韩国成人精品a∨在线观看| 日韩精品一区二区三区四区视频| 久久综合精品国产一区二区三区| 最近免费中文字幕视频2019| 久久蜜桃av一区二区天堂| 精品国产精品三级精品av网址| 亚洲成人黄色在线观看| 欧美一级专区免费大片| 亚洲精品国产综合久久| 日韩久久午夜影院| 久久精品人人做| 国产午夜精品全部视频播放| 中文字幕国产亚洲2019| 亚洲美女av电影| 久久99热狠狠色一区二区| 黑人巨大精品欧美一区免费视频| 欧美日韩激情一区二区| 亚洲欧洲一区二区三区| 91精品国产综合久久婷婷香蕉| 国产欧美精品一区| 精品国产网站在线观看| 亚洲人成网站免费播放| 在线观看三级视频欧美| 亚洲人成网站777色婷婷| 欧美一区二区免费| 亚洲老板91色精品久久| 亚洲精品乱码久久久久久金桔影视| 国产欧美va欧美不卡在线| 色悠悠久久88| 欧美日韩中文字幕综合视频| 中文字幕不卡av| 国产乱理伦片在线观看夜一区| 亚洲综合在线免费观看| 欧美日韩国产不卡| 欧美电影精品一区二区| 国产在线精品免费| 在线观看不卡av| 亚洲夜晚福利在线观看| 国产成人精品在线看| 亚洲开心激情网| 久久99这里只有精品| 97se狠狠狠综合亚洲狠狠| 在线观看国产精品日韩av| 欧美成人精品3d动漫h| 亚洲一区精品在线| 欧美精品一区二区三区蜜桃视频| 欧美巨大另类极品videosbest| 中文字幕亚洲综合久久筱田步美| 亚洲精品av在线播放| 精品久久久久久久久久久| 日韩欧美亚洲一区二区| 国产农村妇女精品| 国产一区二区三区四区在线观看| 亚洲视频一区二区在线| 久88久久88久久久| 亚洲免费在线观看视频| 中文字幕v亚洲ⅴv天堂| 日韩成人中文电影| 在线成人午夜影院| 精品福利在线视频| 亚洲欧洲日本在线| 91高清在线观看| 亚洲精品高清在线| 国产女人水真多18毛片18精品视频| 久久精品亚洲麻豆av一区二区| 亚洲私人影院在线观看| 91黄色免费版| 亚洲一区二区四区蜜桃| 一区二区免费在线播放| 亚洲一区视频在线观看视频| 中文字幕在线精品| 国产乱子伦视频一区二区三区| 国产一区二区看久久| 亚洲影视在线观看| 精品国产乱码久久久久久1区2区| 欧美日韩国产在线播放| 国产久卡久卡久卡久卡视频精品| 亚洲二区中文字幕| 欧美精品在线视频| 欧美午夜宅男影院在线观看| 亚洲最大的成人av| 欧美日韩在线一区二区| 日韩av在线影院| 中文字幕亚洲自拍| 国产一区二区三区视频| 日韩一级成人av| 亚洲免费电影在线| 亚洲乱码国产乱码精品精天堂| 欧美精选一区二区| 日韩精品在线观看网站| 中文字幕日韩欧美一区二区三区| 亚洲一区二区高清| 欧美一区二区三区不卡| 国产欧美一区二区精品仙草咪| 久久久亚洲国产美女国产盗摄| 亚洲欧洲另类国产综合| 亚洲精品一区二区三区99| 日韩精品一区二区三区swag| 亚洲视频一区二区在线观看| 亚洲精品一区久久久久久| 国产成人精品免费看| 亚洲综合激情另类小说区| 亚洲国产精品综合小说图片区| 精品国产免费人成在线观看| 精品国产乱码久久久久久免费| 激情五月婷婷综合| 国产成人久久精品77777最新版本| 一区二区三区四区精品在线视频| 91精品国产一区二区三区香蕉| 日韩欧美国产激情| 久久亚洲综合色一区二区三区| 欧美成人精品1314www| 欧美一级在线视频| 日韩va亚洲va欧洲va国产| 亚洲精品国产一区二区三区四区在线| 亚洲一区二区三区自拍| 欧美成人女星排名| 高清久久久久久久高清久久| 亚洲性视频网址| 一本一道久久a久久精品| 亚洲精品美女在线观看| 亚洲一区二区三区精品在线| 国产成人福利片|