zoukankan      html  css  js  c++  java
  • 78)PHP,编写session存储机制(将数据写进数据库)的代码整理(未实验)

     1 <?php
     2 
     3 
     4 
     5 function userSessionBegin() {
     6     echo '<br>Begin<br>';
     7     //初始化数据库服务器连接,这个函数是最先执行,所以,以下的几个函数都用到数据库连接,所以,我就把它放在最先执行的函数里面,因为只要是数据库连接了,在整个文件中都有效。
     8     $link = mysql_connect('127.0.0.1:3306', 'root', '1234abcd');
     9     mysql_query('set names utf8');
    10     mysql_query('use `php34`');
    11 }
    12 function userSessionEnd() {
    13     echo '<br>End<br>';
    14     return true;
    15 }
    16 /**
    17  * 读操作
    18  * 执行时机:    session机制开启程中执行
    19  * 工作:        从当前session数据区读取内容
    20  * @param $sess_id string
    21  * @return string
    22  */
    23 function userSessionRead($sess_id) {
    24     echo '<br>Read<br>';
    25     //查询
    26     $sql = "SELECT session_content FROM `session` WHERE session_id='$sess_id'";
    27     $result = mysql_query($sql);
    28     if ($row = mysql_fetch_assoc($result)) {
    29         return $row['session_content'];
    30     } else {
    31         //没有找到,返回空字符串
    32         return '';
    33     }
    34 }
    35 /**
    36  * 写操作
    37  * 执行时机:    脚本周期结束时,PHP在整理收尾时
    38  * 工作:        将当前脚本处理好的session数据,持久化存储到数据库中!
    39  * @param $sess_id string
    40  * @param $sess_content string 序列化好的session内容字符串
    41  * @return bool
    42  */
    43 function userSessionWrite($sess_id, $sess_content) {
    44     echo '<br>Write<br>';
    45     // 完成写,这里的REPLACE和INSERT一样,都是要是数据存在,就不写了,要是数据不在,就写进数据库
    46     $sql = "REPLACE INTO `session` VALUES ('$sess_id', '$sess_content', unix_timestamp())";
    47     // $sql = "INSERT INTO `session` VALUES ('$sess_id', '$sess_content') ON DUPLICATE KEY UPDATE session_content='$sess_content', last_time=unix_timestamp()"
    48     return mysql_query($sql);
    49 }
    50 /**
    51  * 删除操作
    52  * 执行时机:    调用了session_destroy()销毁session过程中被调用
    53  * 工作:        删除当前session的数据区(记录)
    54  * @param $sess_id string
    55  * @return bool
    56  */
    57 function userSessionDelete($sess_id) {
    58     echo '<br>Delete<br>';
    59     //删除
    60     $sql = "DELETE FROM `session` WHERE session_id='$sess_id'";
    61     return mysql_query($sql);
    62 }
    63 /**
    64  * 垃圾回收操作
    65  * 执行时机:    开启session机制时,有概率的执行
    66  * 工作:        删除那些过期的session数据区
    67  * @param $max_lifetime
    68  * @return bool
    69  */
    70 function userSessionGC($max_lifetime) {
    71     echo '<br>GC<br>';
    72     //删除
    73     $sql = "DELETE FROM `session` WHERE last_time<unix_timestamp()-$max_lifetime";
    74     return mysql_query($sql);
    75 }
    76 
    77 // 设置
    78 session_set_save_handler(
    79     'userSessionBegin',
    80     'userSessionEnd',
    81     'userSessionRead',
    82     'userSessionWrite',
    83     'userSessionDelete',
    84     'userSessionGC'
    85     );
    86 ini_set('session.save_handler', 'user');
  • 相关阅读:
    【算法】二分图的判定
    【模板】并查集 两种路径压缩写法(类模板和函数模板)
    【模板】堆的结构
    新疆大学OJ(ACM) 1099: 数列有序!
    新疆大学OJ(ACM) 1047: string 字符串排序
    新疆大学(新大)OJ xju 1010: 四个年级 C++ STL map 将4层循环优化成2层循环可解
    新疆大学(新大)OJ xju 1009: 一带一路 prim求最短路径+O(n)素数筛选
    新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘
    【算法】第二类斯特林数Stirling
    【复习资料】编译原理中:短语,直接短语,句柄
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7391320.html
Copyright © 2011-2022 走看看