From : http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4002.html

大部分使用php的人一旦应用到session都会使用cookie。
cookie虽好可是它也会给我们带来一些隐患的。
隐患一:如果客户端机器的cookie一旦因病毒而失效了,那么session也就相当于没有了。
隐患二:session在php中默认的是以文件的形式保存在一个临时文件夹里面的,对于一个小型系统来说,这样做完全可以,
可是对于一个大型而又被经常访问的系统来说,就不是很好的办法了。假设这个网站一天有1000个人访问。一个月以后session的临时文件夹就会有30000个临时文件。想象一下计算机要从30000里面找一条session_sid是一个多么漫长的事情呀!
因此为了提高效率。
交易使用用数据库保存session。具体方法如下:
1.更改php.ini文件。
由于php默认保存session的方式是files所以我们要改变它。即:找到“session.save_handler = files”将“files”改为“User”。
把session的模式改成用户自定义的。

2.建立数据库:

CREATE TABLE `db_session` (`sesskey` char(32) NOT NULL,`expiry` int(11) unsigned NOT NULL,`value` text NOT NULL,PRIMARY KEY   (`sesskey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

数据库表明:db_session
列名:sesskey,expiry,value 其中:sesskey为主键。
Value里面存放着session里面的值。
3.建立session_mysql.php文件。这个文件是用来构造保存session的方法的。修改一下参数直接使用就可以了。
session_mysql.php

复制PHP内容到剪贴板 
PHP代码:

<?php$gb_DBname="db_myBBS";//数据库名称$gb_DBuser="root";//数据库用户名称$gb_DBpass="23928484";//数据库密码$gb_DBHOSTname="localhost";//主机的名称或是IP地址$SESS_DBH="";$SESS_LIFE=get_cfg_var("session.gc_maxlifetime");//得到session的最大有效期。function sess_open($save_path,$session_name){global $gb_DBHOSTname,$gb_DBname,$gb_DBuser,$gb_DBpass,$SESS_DBH;if(!$SESS_DBH=mysql_pconnect($gb_DBHOSTname,$gb_DBuser,$gb_DBpass)){echo "<li>MySql Error:".mysql_error()."<li>";die();}if(!mysql_select_db($gb_DBname,$SESS_DBH)){echo "<li>MySql Error:".mysql_error()."<li>";die();}return true;}function sess_close(){return true;}function sess_read($key){global $SESS_DBH,$SESS_LIFE;$qry="select value from db_session where sesskey = '$key' and expiry > ".time();$qid=mysql_query($qry,$SESS_DBH);if(list($value)=mysql_fetch_row($qid)){return $value;}return false;}function sess_write($key,$val){global $SESS_DBH,$SESS_LIFE;$expiry=time()+$SESS_LIFE;$value=$val;$qry="insert into db_session values('$key',$expiry,'$value')";$qid=mysql_query($qry,$SESS_DBH);if(!$qid){$qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry >".time();$qid=mysql_query($qry,$SESS_DBH);}return $qid;}function sess_destroy($key){global $SESS_DBH;$qry="delete from db_session where sesskey = '$key'";$qid=mysql_query($qry,$SESS_DBH);return $qid;}function sess_gc($maxlifetime){global $SESS_DBH;$qry="delete from db_session where expiry < ".time();$qid=mysql_query($qry,$SESS_DBH);return mysql_affected_rows($SESS_DBH);}session_module_name();session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_gc");
?>

4.建立测试文件。
在使用之前必须引用刚刚建立的session_mysql.php文件。
session_test.php

复制PHP内容到剪贴板 
PHP代码:

<?php
include ("session_mysql.php");
session_start();
$_SESSION['abc']= "A: I will be back!";
$_SESSION['meto']= "B: Me too ";
$_SESSION['name']= "louis ";
echo "<a href=\"get_session_test.php\">click me</a>";
?>get_session_test.php
<?php
include ("session_mysql.php");
session_start();
echo $_SESSION['abc'];
echo "<br>";
echo $_SESSION['meto'];
echo "<br>";
echo $_SESSION['name'];
$_SESSION['wq']="12e";
echo "<br><a href=\"get_session_test2.php\">click again</a>";
?>get_session_test2.php
<?php
include ("session_mysql.php");
session_start();
echo $_SESSION['abc'];
echo "<br>";
echo $_SESSION['meto'];
echo "<br>";
echo $_SESSION['name'];
echo "<br>";
echo $_SESSION['wq'];
//session_destroy();//用来销毁所有session的函数。
?>

其它参考资料:

http://www.cnblogs.com/youxin/p/3529853.html

http://www.oschina.net/search?scope=project&q=php+session

[转]PHP用mysql数据库存储session相关推荐

  1. 对 PHP SESSION 的深刻认识(三)---- 数据库存储session

    前言: 本篇博客是继承自我的前面的两篇博客 <对 PHP SESSION 的深刻认识(一)>.<对 PHP SESSION 的深刻认识(二)> 而来的,主要是解决前面的问题. ...

  2. MySQL—05—MySQL如何处理SQL语句;MySQL数据库存储引擎介绍;

    一. MySQL 中的执行计划 1 MySQL 执行计划 在 MySQL 中可以通过 explain 关键字模拟优化器,执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的. 2 M ...

  3. 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...

    本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...

  4. ubuntu mysql数据储存在哪里_如何更改在Ubuntu下的MySQL数据库存储位置?

    在默认的数据库存储位置下就会有个文件夹mysqldb.要操作数据库首先得停止数据库进程: $sudo /etc/init.d/mysql stop 本文以转移到/home/mysql这个位置为例,下面 ...

  5. 【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标

    目录 前言 一.uniapp 实现点击复制某段文本 二.MySQL 数据库存储 emoji 表情 三.Layui 的富文本编辑器 四.谷歌 Java 二维码生成 (1) 引入 MAVEN 依赖 五.微 ...

  6. Mysql数据库存储的原理

    Mysql数据库存储的原理 Mysql储存过程简介 Mysql数据库存储的优点 1.存储过程能实现较快的执行速度. 2.存储过程允许标准组件是编程. 3.存储过程可以用流控制语句编写,有很强的灵活性, ...

  7. mysql 设置数据库路径_MySQL数据库之更改Mysql数据库存储位置的具体步骤

    本文主要向大家介绍了MySQL数据库之更改Mysql数据库存储位置的具体步骤 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一.首先把mysql的服务先停掉. 二.更改MySQ ...

  8. Mysql数据库存储引擎--转

    原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...

  9. redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...

    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...

最新文章

  1. mysql的安装和启动_mysql安装和启动
  2. python天天学怎么样-每天一遍,好好学习,天天向上(Python)
  3. 岗位推荐 | 腾讯招聘自然语言处理方向实习生
  4. 想学习UI设计,培训的话需要多少钱?
  5. python web开发框架 支持windows_基于Python的Web开发框架研究_曾浩
  6. winscp自动执行脚本
  7. algorithm头文件中的函数:remove()与remove_if() 函数,……
  8. 万稞pw80线切割编程软件_线切割的老司机们,你们知道绘图编程软件AUTOP是怎么来的吗?...
  9. 面试宝典-Java反射机制
  10. 二阶有源带通滤波器滤波原理
  11. 易基因 - 外泌体let-7d-3p和miR-30d-5p作为宫颈癌及其癌前病变无创筛查的诊断标志物|早期筛查
  12. NetLimiter Pro
  13. 【财富空间】像先知一样思考,如拳手般战斗
  14. 视频音频提取器推荐:快速提取视频中的音频!
  15. 软件授权码方案(附Python示例代码)
  16. 详解量子计算:相位反冲与相位反转
  17. Micropython——关于Pico中I2C和SPI的实际应用示例(OLED屏幕显示)
  18. Symmetric Difference
  19. linux下ffmpeg库 ARM交叉编译
  20. 写代码到底应该买什么键盘?

热门文章

  1. 新报告直指3大安全威胁 企业需小心应对
  2. jQuery通过ajax方法获取json数据不执行success的原因及解决方法
  3. Spring @Lazy
  4. 论 MySql InnoDB 如何通过插入意向锁控制并发插入
  5. ActiveMQ — 集群 — 安装与配置
  6. golang的mongodb操作(mgo)
  7. SQL Server 2012笔记分享-49:理解数据库快照
  8. 如何备份思科、锐捷、Juniper的配置文件
  9. 新看了两件家具请朋友们给点意见
  10. 小程序 音频API采坑完全手册