`
shuilinbo
  • 浏览: 12843 次
文章分类
社区版块
存档分类
最新评论

文件数据库PHP用mysql数据库存储session 文件数据库

阅读更多

题记:写这篇博客要主是加深自己对文件数据库的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。

    大部分应用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的函数。
?>

文章结束给大家分享下程序员的一些笑话语录: 自从有了Photoshop,我再也不相信照片了!(没有Photoshop的年代,胶片照片年代做假的也不少,那时候都相信假的!)

分享到:
评论

相关推荐

    php mysql数据库 存储session

    NULL 博文链接:https://melec.iteye.com/blog/851649

    PHP自定义session存储(mysql数据库)

    里边有详细代码,包含SQL脚本,...//设置用户自定义Session存储 session_set_save_handler('mysession_open', 'mysession_close', 'mysession_read', 'mysession_write', 'mysession_destroy', 'mysession_gc'); ?&gt;

    探讨如何把session存入数据库

    要采用数据库来保存的话,我们需要修改成拥护模式,改称 session.save_handler=”use”就可以了,但是,这仅仅是说明我门没有采用文件的方式存储session,我们还要选择数据库和建立数据库的表。建立数据库和数据库的...

    ThinkPHP实现将SESSION存入MYSQL的方法

    本文以实例讲解了ThinkPHP实现将SESSION存入MYSQL的方法,所采用的运行环境是ThinkPHP3.1.2版 首先index.php中设置为: &lt;?php define('APP_DEBUG', true);//设置为调试模式 require '../ThinkPHP/ThinkPHP.php';...

    php数据库储存回话

    php的mysql存储session功能实现

    优化使用mysql存储session的php代码

    之前写过两篇文章《自定义SESSION(二)——数据库保存》和《我为什么不使用session》 但后来发现都有问题。前者处理在实际中几乎没什么用处,而且session回收还得自己另外处理。后者频繁的操作数据库,打来了很大的...

    SESSION存放在数据库用法实例

    本文实例讲述了SESSION存放在数据库用法。分享给大家供大家参考。具体如下: &lt;?php /* CREATE TABLE `ws_sessions` ( `session_id` varchar(255) binary NOT NULL default '', `session_expires` int(10) ...

    PHP用mysql数据库存储session的代码

    大部分使用php的人一旦应用到session都会使用cookie。cookie虽好可是它也会给我们带来一些隐患的。

    将PHP的session数据存储到数据库中的代码实例

    里我们将分享两个将PHP的session数据存储到数据库中的代码实例,分别针对PostgreSQL与MySQL,需要的朋友可以参考下

    基于PHP 足球彩票网全站程序的毕业设计,基于MVC架构,使用PHP作为主要开发语言,使用MySQL作为数据存储方式

    2.使用MySQL数据库作为数据存储方式,实现用户信息、彩票信息等数据的存储和管理。 3.实现用户注册、登录、忘记密码等功能,使用PHP的Session技术确保用户信息的安全性。 4.实现彩票的购买、查看开奖结果等功能,...

    php中使用session_set_save_handler()函数把session保存到MySQL数据库实例

    主要介绍了php中使用session_set_save_handler()函数把session保存到MySQL数据库实例,本文同时还给出了Session保存到Mysql数据库存储类,需要的朋友可以参考下

    关于PHP session 存储方式的详细介绍

    下面介绍一种基于Mysql数据库的session存储方式.首先要进行的配置如下:1&gt;php.ini中将session.save_handler = files 中的files改为User,其他默认即可,重启Apache(好像没改也行啊)2&gt;本实例创建的数据库名叫php, ...

    PHP网络编程技术与实践 源码

    4.1 通过PHP操作MySQL数据库 4.1.1 PHP连接MySQL 4.1.2 选择数据库 4.1.3 创建新查询 4.1.4 显示查询结果 4.1.5 查看数据库信息 4.1.6 事务处理 4.1.7 存储过程 4.1.8 出错处理 4.2 SQL Server数据库的相关知识 4.3 ...

    upupw_Apache_PHP5.5

    upupw\MySQL\data MySQL数据库存储目录 upupw\Apache2\conf\httpd-vhosts.conf 虚拟主机配置文件 upupw\PHP5\php.ini PHP配置文件 upupw\MySQL\my.ini MySQL配置文件 upupw\sendmail\sendmail....

    Zebra_Session:PHP的默认会话处理程序的包装器,使用MySQL进行存储-开源

    Zebra_Session是一个PHP类,用作PHP的默认会话处理功能的包装器,但不是将会话数据存储在平面文件中,而是将它们存储在MySQL数据库中,从而提供了更好的安全性和更好的性能。 该库还是针对跨多个Web服务器(使用负载...

    php友情交流系统 php mysql apache

    关于mysql数据库的用法:如果你的用户名为abc,密码为123,数据库名为xyz,应该改为:$db = mysql_connect("localhost", "abc","123"); mysql_select_db("xyz",$db); 单机调试可以用 $db = mysql_connect("localhost...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...

    PHP程序开发范例宝典III

    第6章 PHP与MySQL数据库技术 213 6.1 连接MySQL数据库 214 实例142 通过mysql_connect函数连接数据库 214 实例143 通过Mysqli_connect()函数连接数据库 216 实例144 通过面向对象连接数据库 217 6.2 数据...

Global site tag (gtag.js) - Google Analytics