网站地图    收藏   

主页 > php专栏 > php会话 >

PHP 实现多服务器共享 SESSION 数据

来源:未知    时间:2014-11-27 21:48 作者:xxadmin 阅读:

[导读] 代码实现,首先创建数据表,MySQL 的 SQL 语句如下: CREATE TABLE `sess`( `sesskey` varchar (32) NOT NULL default , `expiry` bigint (20) NOT NULL default 0, `data`longtext NOT NULL , PRIMARY KEY (`sesskey`), KEY `expiry`(`expiry`)...

代码实现,首先创建数据表,MySQL 的 SQL 语句如下:

  1. CREATE TABLE `sess` ( 
  2.  
  3. `sesskey` varchar(32) NOT NULL default ”, 
  4.  
  5. `expiry` bigint(20) NOT NULL default ‘0′, 
  6.  
  7. `data` longtext NOT NULL
  8.  
  9. PRIMARY KEY (`sesskey`), 
  10.  
  11. KEY `expiry` (`expiry`) 
  12.  
  13. ) TYPE=MyISAM 

sesskey 为 SESSION ID,expiry 为 SESSION 过期时间,data 用于保存 SESSION 数据,默认情况下 SESSION 数据是以文件方式保存,想要使用数据库方式保存,就必须重新定义 SESSION 各个操作的处理函数,PHP 提供了session_set_save_handle() 函数,可以用此函数自定义 SESSION 的处理过程,当然首先要先将 session.save_handler 改成 user,可在 PHP 中进行设置,代码如下:

<?php session_module_name(‘user‘); ?>

接下来着重讲一下 session_set_save_handle() 函数,此函数有六个参数:

session_set_save_handler(string open,string close,string read,string write,string destroy,string gc)

各个参数为各项操作的函数名,这些操作依次是:打开、关闭、读取、写入、销毁、垃圾回收,PHP 手册中有详细的例子,在这里我们使用 OO 的方式来实现这些操作,详细代码如下:

  1. <?php 
  2. define(‘MY_SESS_TIME‘, 3600); //SESSION 生存时长 
  3. //类定义 
  4. class My_Sess 
  5. function init() 
  6. $domain = ‘.infor96.com‘; 
  7. //不使用 GET/POST 变量方式 
  8. ini_set(‘session.use_trans_sid‘, 0); 
  9. //设置垃圾回收最大生存时间 
  10. ini_set(‘session.gc_maxlifetime‘, MY_SESS_TIME); 
  11.  
  12. //使用 COOKIE 保存 SESSION ID 的方式 
  13. ini_set(‘session.use_cookies‘, 1); 
  14. ini_set(‘session.cookie_path‘, ‘/‘); 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论