mysql数据库保存sesison会话
<?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会话的更多相关文章
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- MySQL数据库保存emoji表情
何为emoji表情?这里的全是. MySQL数据库为什么不能存储emoji?不是MySQL不能,而是MySQL的utf8编码不能!原来MySQL下的utf8编码每个字符占3个字节,而emoji占4个字 ...
- mysql 数据库保存\n 微信分享时不能换行
主要因为保存的是\n 但是查询出来是\\n 所以需要把\\n替换为\n即可(不转换的话不会换行并且显示\n)
- php操作mysql数据库的基本类
代码如下 复制代码 <?php$dbhost='localhost';$dbuser='root';$dbpass='123456';$dbname='products';$connect=my ...
- Linux系统下MySQL数据库的备份和恢复
当我们MySQL数据库保存重要数据的时候,备份工作极为重要.本文介绍如何使用mysqldump备份和恢复数据,使用该方法,可以将数据库中的数据备份成一个文本文件,也可将备份好的数据库迁移到另一台的服务 ...
- 数据存储之使用mysql数据库存储数据
推荐安装mysql5.7环境: 官网下载:https://dev.mysql.com/downloads/installer/5.7.html 如果提示没有.NET Framework框架.那么就在提 ...
- mysql数据库5.6.45安装后的配置(离线安装包版)
二.windows10下的配置 (1) 环境变量配置 打开控制面板=>系统和安全=>系统=>高级系统设置,选择环境变量,在系统变量中找到path,编辑该选项. 第一行是oracle数 ...
- pymysql 使用twisted异步插入数据库:基于crawlspider爬取内容保存到本地mysql数据库
本文的前提是实现了整站内容的抓取,然后把抓取的内容保存到数据库. 可以参考另一篇已经实现整站抓取的文章:Scrapy 使用CrawlSpider整站抓取文章内容实现 本文也是基于这篇文章代码基础上实现 ...
- 使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话
使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话 因为公司有多台服务器,所以session要保存在sql server上,因此要在数据库中建立存放se ...
随机推荐
- 使用Java的URL/HttpURLConnection进行远程调用(POST请求)
利用Java的HttpURLConnection进行远程url请求(调用远程接口) 测试类:请求类型为json,以post方式请求,利用OutputStream写入数据 实体类: public cla ...
- DEPLOY YOUR WEBSITE TO GITHUB PAGES
DEPLOY YOUR WEBSITE TO GITHUB PAGES Review Fantastic! You now have your site published on the public ...
- laravel passport加密jwt格式的access_token中的sub(user_id)字段
在很多需求我们不希望别人知道用户在我们表中的 user_id :但是又想用数据库的自增 id 功能:一般时候在取出用户后加密 user_id 加密即可:但是总有那么几个不经意间就可能把我们的 user ...
- ExtJS4.2下将表单元素放在菜单时不能进行拷贝的问题解决办法
通过浏览器F12我们发现,在菜单对应的dom元素上面,有几个系统附加的事件处理函数,只要我们将它去掉就可以了.示意代码如下: { xtype: "button", scope: z ...
- Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)
Redis的哨兵机制中,如果是多哨兵模式,哨兵节点之间也是可以相互感知的,各种搜索之后出来的是千篇一律的一个基础配置文件,在配置当前哨兵节点的配置文件中,并没有配置其他哨兵节点的任何信息.如下是一个哨 ...
- Java环境变量配置----JDK开发环境及环境变量设置
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- BUG在线上环境中出现的原因总结
1.线上环境数据的复杂度以及数据量是测试环境不能比拟的. 2.业务操作的不可控性,用户错误的使用习惯. 3.实际场景的复杂性. 上线之后,测试人员需要做好以下二件事: 第一,灰度测试 项目上线之后 ...
- python,ModuleNotFoundError,is not a package
Traceback (most recent call last): File "/home/lll/zzz/work/video/zzz/generate.py", line 7 ...
- 云主机中毒 cpu爆满解决日志
在上一篇博文Linux系统发现占用CPU达100%的进程并处理 里面以为已经把挖矿程序sustse处理干净了,可是没过两天又收到阿里云短信提醒,说服务器有问题,难道还有后门吗?也多亏阿里云给出提示“出 ...
- 宝塔面板安装在根目录www下
不能重装,重装防火墙要重新关闭. 安装时要主要更改文件权限.