如果您的应用系统为了应对大量并发访问而采用多台web前端来分担负载。这时如何在多台web服务器上共享session就是一个很重要的问题。
php为我们提供了session_module_name和session_set_save_handler函数来自定义session信息的存储、访问、回收等函数。
ADODB是使用广泛的数据抽象层之一,他在提供统一数据访问格式的基础上利用session_set_save_handler实现了将session信息数据存入数据库。
下面我们就介绍一下如何使用ADODB的这个功能
1、首先我们下载最新版本的ADODB。下载地址:http://adodb.sourceforge.net/#download
解压缩后将ADODB文件加方在你的应用程序根目录下。打开adodb/session目录你会看到有几个扩展名为.sql的文件。这就是存放session数据的数据表。
选择与你使用的数据库类型相同的一个sql文件。建立session数据表。
2、我们将所有配置信息放在配置文件中,在其他项目文件中包含即可。
config.php:
<?php
GLOBAL
$ADODB_SESSION_DRIVER, // SESSION服务器的数据库类型
$ADODB_SESSION_CONNECT, // SESSION服务器IP地址
$ADODB_SESSION_USER, // SESSION服务器的用户名
$ADODB_SESSION_PWD, // SESSION服务器的密码
$ADODB_SESSION_DB, // SESSION服务器的数据库名
$ADODB_SESSION_TBL; // SESSION数据表名
$ADODB_SESSION_DRIVER = "mysql";
$ADODB_SESSION_CONNECT = "localhost";
$ADODB_SESSION_USER = "root";
$ADODB_SESSION_PWD = "123456";
$ADODB_SESSION_DB = "sessiondb";
$ADODB_SESSION_TBL = "sessions";
// 包含相关的文件
include_once('adodb/adodb.inc.php');
include_once('adodb/session/adodb-session.php');
session_start();
?>
3、在项目文件中包含以上配置即可。
index.php:
<?php
include_once 'config.php';
// 使用session跟以前一模一样,呵呵。
$_SESSION['TEST'] = 'ADODB SESSION';
do other stuff......
?>
文件执行完毕后会自动调用close方法关闭连接。
session信息被回收的时间由php.ini的配置决定。
以上是最基本的默认使用方法。默认打开一个持久性的连接,如果想每次请求数据库打开一个非持久性连接需要在
session_start()函数前显式调用adodb_sess_open(false,false,false);这个函数的原形为adodb_sess_open($path, $sessname, $connectMode)
其中第三个参数就是定义数据库的连接方式。(关于连接方式请查阅adodb相关手册)
$connectMode | Connection Method
true | PConnect( )
false | Connect( )
'N' | NConnect( )
'P' | PConnect( )
'C' | Connect( )
如果你需要将数据库中的session信息加密。就将include_once('adodb/session/adodb-session.php');改为include('adodb/session/adodb-cryptsession.php');


