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 ...
随机推荐
- mac电脑复制键失灵
mac键按command+c偶尔失灵打电话给客服. 客服的解决方案: 1.关机状态同时按: shiflt+option+control+关机键 (重置键盘快捷键不会丢失数据) 20秒 2.松开后重 ...
- thinkphp5.1 的else if的使用方法
首先thinkphp5.1获取session值是 {$think.session.user_id}或者{$Request.session.user_id}来获取session 下面是if else 的 ...
- TinkPHP框架学习-04命名空间
1-----命名空间 2-----调用其他控制器的方法 3-----U()函数 一命名空间 ①看做是虚拟目录 --ThinkPHP/Library 初始命名空间 --在Library文件夹下的所有文件 ...
- 用es5原生模仿-es6Promise异步处理
用es5原生模仿-es6Promise异步处理,不过在处理异常的时候有点小bug不是很完美,不过多级then 是没问题的和resolve, rejec 正常调用和异常处理调用是没问题的.本帖属于原创 ...
- concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
var arr1 = ['a', 'b', 'c']; var arr2 = ['d', 'e', 'f']; var arr3 = arr1.concat(arr2); // arr3 is a n ...
- install django采坑
1. install python 3 2. install pip 3. install virtual enviroment : python -m venv myvenv 4. 切换到virt ...
- Spring核心之IOC
IOC是Spring的两大核心之一:IOC的核心就是解耦. 举个例子:有2个班级可以上课,校长指定老师去上课,代码如下 package com.hongcong.test; public class ...
- pyton 模块之 pysmb 文件上传(windows)
#!/usr/bin/env python #coding:utf-8 from smb.SMBConnection import SMBConnection from nmb.NetBIOS imp ...
- df命令,du命令,磁盘分区
df 命令 功能:用来检查linux的文件系统的磁盘空间占用情况 1. df -h 2. 以innode节点数量显示磁盘空间占用情况 df -ih 3. 列出文件系统类型 df -Th du 命令 功 ...
- HDU - 4858 项目管理
N个点,M条无向边.现在有Q组操作,一种是给 i号点增加能量,一种是询问 i号点相邻点的能量和(点间有多条边就算两次). 据说暴力能过,但还是用这题学习了一下 点分块 . 度数不超过 sqrt(M) ...