<?php
header('Content-type:text/html;charset=gbk;');
date_default_timezone_set('PRC');
class db{
private $conn=null;
public function __construct($dsn,$user,$password){
try{
$this->conn = new PDO($dsn, $user, $password);
}catch(PDOException $e){
echo $e->getMessage();
trigger_error('stopped',E_USER_ERROR);
} }
public function query($session_id){
$sth=$this->conn->prepare('select session_id,session_data from session where session_id=? limit 1');
$sth->execute(array($session_id));
$result=$sth->fetch(PDO::FETCH_ASSOC);
return $result['session_data'];
}
public function insert($session_id,$session_data){
$sth=$this->conn->prepare('replace into session values(null,?,?,?)');
$sth->execute(array($session_id,date('Y-m-d H:i:s'),$session_data));
return true;
}
public function delete($where,$type=1){
if($type==1){
$sth=$this->conn->prepare('delete from session where session_id=?');
$sth->execute(array($where));
}elseif($type==2){
$sth=$this->conn->prepare('delete from session where session_date<?');
$sth->execute(array($where));
}
return true;
}
} class session_handler{
private $db=null;
public function __construct(db $obj){
$this->db=$obj;
}
public function open($one,$two){
return true;
}
public function close(){
return true;
}
public function read($id){
return (string)$this->db->query($id);
}
public function write($id,$data){
$this->db->insert($id,$data);
return true;
}
public function destroy($id){
$this->db->delete($id);
return true;
}
public function gc($maxlifetime){
$this->db->delete(strtotime("Y-m-d H:i:s",time()-$maxlifetime),2);
return true;
}
} $handler=new session_handler(new db('mysql:dbname=session;host=192.168.0.2','lwy','lwy'));
session_set_save_handler(
array($handler, 'open'),
array($handler, 'close'),
array($handler, 'read'),
array($handler, 'write'),
array($handler, 'destroy'),
array($handler, 'gc')
);
register_shutdown_function('session_write_close');
session_start();
$_SESSION['aa']='fffffffffeeeeeeeesssssssssssss';
$_SESSION['bb']='fefdsfgfsfsdfsd';
var_dump($_SESSION); ?> php.ini session.save_handler=files 改为 session.save_handler=user
数据库session
表session
表创建sql:
CREATE TABLE `session` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`session_id` varchar(100) DEFAULT NULL,
`session_date` timestamp NULL DEFAULT NULL,
`session_data` varchar(1024) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `session_id` (`session_id`)
)

mysql数据库保存sesison会话的更多相关文章

  1. EF 连接MySQL 数据库  保存中文数据后乱码问题

    EF 连接MySQL 数据库  保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...

  2. MySQL数据库保存emoji表情

    何为emoji表情?这里的全是. MySQL数据库为什么不能存储emoji?不是MySQL不能,而是MySQL的utf8编码不能!原来MySQL下的utf8编码每个字符占3个字节,而emoji占4个字 ...

  3. mysql 数据库保存\n 微信分享时不能换行

    主要因为保存的是\n 但是查询出来是\\n 所以需要把\\n替换为\n即可(不转换的话不会换行并且显示\n)

  4. php操作mysql数据库的基本类

    代码如下 复制代码 <?php$dbhost='localhost';$dbuser='root';$dbpass='123456';$dbname='products';$connect=my ...

  5. Linux系统下MySQL数据库的备份和恢复

    当我们MySQL数据库保存重要数据的时候,备份工作极为重要.本文介绍如何使用mysqldump备份和恢复数据,使用该方法,可以将数据库中的数据备份成一个文本文件,也可将备份好的数据库迁移到另一台的服务 ...

  6. 数据存储之使用mysql数据库存储数据

    推荐安装mysql5.7环境: 官网下载:https://dev.mysql.com/downloads/installer/5.7.html 如果提示没有.NET Framework框架.那么就在提 ...

  7. mysql数据库5.6.45安装后的配置(离线安装包版)

    二.windows10下的配置 (1) 环境变量配置 打开控制面板=>系统和安全=>系统=>高级系统设置,选择环境变量,在系统变量中找到path,编辑该选项. 第一行是oracle数 ...

  8. pymysql 使用twisted异步插入数据库:基于crawlspider爬取内容保存到本地mysql数据库

    本文的前提是实现了整站内容的抓取,然后把抓取的内容保存到数据库. 可以参考另一篇已经实现整站抓取的文章:Scrapy 使用CrawlSpider整站抓取文章内容实现 本文也是基于这篇文章代码基础上实现 ...

  9. 使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话

    使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话   因为公司有多台服务器,所以session要保存在sql server上,因此要在数据库中建立存放se ...

随机推荐

  1. 使用Java的URL/HttpURLConnection进行远程调用(POST请求)

    利用Java的HttpURLConnection进行远程url请求(调用远程接口) 测试类:请求类型为json,以post方式请求,利用OutputStream写入数据 实体类: public cla ...

  2. DEPLOY YOUR WEBSITE TO GITHUB PAGES

    DEPLOY YOUR WEBSITE TO GITHUB PAGES Review Fantastic! You now have your site published on the public ...

  3. laravel passport加密jwt格式的access_token中的sub(user_id)字段

    在很多需求我们不希望别人知道用户在我们表中的 user_id :但是又想用数据库的自增 id 功能:一般时候在取出用户后加密 user_id 加密即可:但是总有那么几个不经意间就可能把我们的 user ...

  4. ExtJS4.2下将表单元素放在菜单时不能进行拷贝的问题解决办法

    通过浏览器F12我们发现,在菜单对应的dom元素上面,有几个系统附加的事件处理函数,只要我们将它去掉就可以了.示意代码如下: { xtype: "button", scope: z ...

  5. Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)

    Redis的哨兵机制中,如果是多哨兵模式,哨兵节点之间也是可以相互感知的,各种搜索之后出来的是千篇一律的一个基础配置文件,在配置当前哨兵节点的配置文件中,并没有配置其他哨兵节点的任何信息.如下是一个哨 ...

  6. Java环境变量配置----JDK开发环境及环境变量设置

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  7. BUG在线上环境中出现的原因总结

    1.线上环境数据的复杂度以及数据量是测试环境不能比拟的. 2.业务操作的不可控性,用户错误的使用习惯. 3.实际场景的复杂性. 上线之后,测试人员需要做好以下二件事:   第一,灰度测试 项目上线之后 ...

  8. python,ModuleNotFoundError,is not a package

    Traceback (most recent call last): File "/home/lll/zzz/work/video/zzz/generate.py", line 7 ...

  9. 云主机中毒 cpu爆满解决日志

    在上一篇博文Linux系统发现占用CPU达100%的进程并处理 里面以为已经把挖矿程序sustse处理干净了,可是没过两天又收到阿里云短信提醒,说服务器有问题,难道还有后门吗?也多亏阿里云给出提示“出 ...

  10. 宝塔面板安装在根目录www下

    不能重装,重装防火墙要重新关闭. 安装时要主要更改文件权限.