PHP操纵session存入数据库
1 为什么需要session入库
当session中数据很多时,或者web服务器集群共享session时,就需要将session存入数据库
session存入数据库一般是要重写session存储机制,具体实现主要通过:
a 自定义相关session函数
b 创建session表
c 重写session函数
数据表如下:
在session.php中重写存储机制
<?php //session重写存储机制 function sessionBegin(){ $link = @mysql_connect('127.0.0.1:3306','root','root'); mysql_query('set names utf8'); mysql_query('use `demo`'); } function sessionEnd(){ return true; } function sessionRead($session_id){ $sql = "select session_content from session where session_id='$session_id'"; $result = mysql_query($sql); if($row = mysql_fetch_assoc($result)){ return $row['session_content']; }else{ return ''; } } function sessionWrite($session_id,$session_content){ $sql = "replace into session values('$session_id','$session_content',unix_timestamp())"; return mysql_query($sql); } function sessionDelete($session_id){ $sql = "delete from session where session_id = '$session_id'"; return mysql_query($sql); } function sessionGC($max_lifetime){ $sql = "delete from session where last_time<unix_timestamp()-$max_lifetime"; return mysql_query($sql); } session_set_save_handler( 'sessionBegin', 'sessionEnd', 'sessionRead', 'sessionWrite', 'sessionDelete', 'sessionGC' ); ini_set('session.save_handle','user');
在其他php文件中引入session.php,就可以操作session存入数据库了
1 <?php 2 header('content-type:text/html;charset=utf-8'); 3 4 require 'session.php'; 5 session_start(); 6 7 // $_SESSION['name'] = 'zhaoyun'; 8 9 // $_SESSION['obj'] = new stdClass; 10 11 // echo '添加成功'.session_id(); 12 echo '<pre>'; 13 var_dump($_SESSION);