78)PHP,编写session存储机制(将数据写进数据库)的代码整理(未实验)
2024-08-30 05:56:58
<?php function userSessionBegin() {
echo '<br>Begin<br>';
//初始化数据库服务器连接,这个函数是最先执行,所以,以下的几个函数都用到数据库连接,所以,我就把它放在最先执行的函数里面,因为只要是数据库连接了,在整个文件中都有效。
$link = mysql_connect('127.0.0.1:3306', 'root', '1234abcd');
mysql_query('set names utf8');
mysql_query('use `php34`');
}
function userSessionEnd() {
echo '<br>End<br>';
return true;
}
/**
* 读操作
* 执行时机: session机制开启程中执行
* 工作: 从当前session数据区读取内容
* @param $sess_id string
* @return string
*/
function userSessionRead($sess_id) {
echo '<br>Read<br>';
//查询
$sql = "SELECT session_content FROM `session` WHERE session_id='$sess_id'";
$result = mysql_query($sql);
if ($row = mysql_fetch_assoc($result)) {
return $row['session_content'];
} else {
//没有找到,返回空字符串
return '';
}
}
/**
* 写操作
* 执行时机: 脚本周期结束时,PHP在整理收尾时
* 工作: 将当前脚本处理好的session数据,持久化存储到数据库中!
* @param $sess_id string
* @param $sess_content string 序列化好的session内容字符串
* @return bool
*/
function userSessionWrite($sess_id, $sess_content) {
echo '<br>Write<br>';
// 完成写,这里的REPLACE和INSERT一样,都是要是数据存在,就不写了,要是数据不在,就写进数据库
$sql = "REPLACE INTO `session` VALUES ('$sess_id', '$sess_content', unix_timestamp())";
// $sql = "INSERT INTO `session` VALUES ('$sess_id', '$sess_content') ON DUPLICATE KEY UPDATE session_content='$sess_content', last_time=unix_timestamp()"
return mysql_query($sql);
}
/**
* 删除操作
* 执行时机: 调用了session_destroy()销毁session过程中被调用
* 工作: 删除当前session的数据区(记录)
* @param $sess_id string
* @return bool
*/
function userSessionDelete($sess_id) {
echo '<br>Delete<br>';
//删除
$sql = "DELETE FROM `session` WHERE session_id='$sess_id'";
return mysql_query($sql);
}
/**
* 垃圾回收操作
* 执行时机: 开启session机制时,有概率的执行
* 工作: 删除那些过期的session数据区
* @param $max_lifetime
* @return bool
*/
function userSessionGC($max_lifetime) {
echo '<br>GC<br>';
//删除
$sql = "DELETE FROM `session` WHERE last_time<unix_timestamp()-$max_lifetime";
return mysql_query($sql);
} // 设置
session_set_save_handler(
'userSessionBegin',
'userSessionEnd',
'userSessionRead',
'userSessionWrite',
'userSessionDelete',
'userSessionGC'
);
ini_set('session.save_handler', 'user');
最新文章
- jQuery 菜单
- Java 测试URL地址是否能正常连接
- Effective Java 49 Prefer primitive types to boxed primitives
- 最小生成树之prim
- jetty ZipException: invalid entry size
- Java Thread.interrupt 害人! 中断JAVA线程(zz)
- CNKI翻译助手-连接数据库失败
- VB指针 与CopyMemory
- fitnesse 中各类fit fixture的python实现
- 过渡到SSAS之一:简单模型认识
- tomcat 错误查看
- iOS集成友盟推送
- DRAM(MT48LC8M32B2)学习
- 1.5 WEB API 上传文件
- emwin之在中断服务程序中创建窗口的结果
- MySQL 的安装与使用(一)
- [Python学习笔记] turtle库的基本使用
- 泛型-----键值对----映射 hashmap--entry中key value 链表
- python 自然语言处理(二)____获得文本语料和词汇资源
- dfs——n的全排列(回溯)
热门文章
- 记录 TypeError: render() got an unexpected keyword argument &#39;renderer&#39; 错误
- Windows 远程桌面连接 CentOS7 (xrdp)
- vue表单选项框
- 2019~2020icpc亚洲区域赛徐州站H. Yuuki and a problem
- vimdiff换行
- MySQL学习笔记——〇三 MySQL习题
- sql plus笔记
- 从西班牙、英国出租车与Uber之争,看共享打车未来发展趋势
- springBoot中mybatis错误之 Property &#39;configuration&#39; and &#39;configLocation&#39; can not specified with together 解决
- node 配置文件