session_set_save_handler实例

<?php

/*
 * usage as:
*
* date_default_timezone_set("PRC");
* set_session_mysql("localhost:3306", "root", "", "db");
* session_start();
* 
* #session table
* 
CREATE TABLE `session` (
  `id` varchar(100) NOT NULL DEFAULT '',
  `value` mediumblob NOT NULL,
  `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
*/
$session_mysql_conn = null;

$session_mysql_host = null;
$session_mysql_user = null;
$session_mysql_pwd = null;
$session_mysql_db = null;

$session_mysql_flag = false;
function open($save_path, $session_name)
{
	global $session_mysql_host;
	global $session_mysql_user;
	global $session_mysql_pwd;
	global $session_mysql_db;
	
	if(null == $session_mysql_host 
			|| null == $session_mysql_user
			|| null == $session_mysql_db)
		return false;
	
	global $session_mysql_conn;
	
	$session_mysql_conn = mysql_connect($session_mysql_host, $session_mysql_user, $session_mysql_pwd);
	
	if(false == $session_mysql_conn)
		return (false);
	
	if(false == mysql_select_db($session_mysql_db, $session_mysql_conn))
	{
		mysql_close($session_mysql_conn);
		$session_mysql_conn = null;
		return (false);
	}
	
	return(true);
}

function close()
{
	return(true);
}

function read($id)
{
	global $session_mysql_conn;
	if(null == $session_mysql_conn)
		return null;
	
	$select_sql = "select value from session where id = '$id'";
	$result = mysql_query($select_sql, $session_mysql_conn);
	if(false == $result)
		return null;
	
	if(0 == mysql_num_rows($result))
		return null;
	
	$row = mysql_fetch_row($result);
	if(empty($row))
		return null;
	
 	$res = $row[0];
	mysql_free_result($result);
	
	//echo "session_mysql_read:$id = $res </br>";
	
	return $res;
}

function write($id, $sess_data)
{
	//echo "session_mysql_write $id = $sess_data </br>";
	
	global $session_mysql_conn;
	global $session_mysql_flag;
	
	if(null == $session_mysql_conn)
		return false;

	$value = mysql_real_escape_string($sess_data);
	$write_sql="update session set value = '$value' where id = '$id'";
	if(false == $session_mysql_flag)
	{
		$select_sql = "select count(id) from session where id = '$id'";
		$result = mysql_query($select_sql, $session_mysql_conn);
		
		if(false == $result)
			return false;
		
		$row = mysql_fetch_row($result);
		
		if(empty($row))
			return false;
		
		if($row[0] == 0)
		{
			$write_sql="insert into session (id,value) values ('$id', '$value')";
		}
		else
		{
			$session_mysql_flag = true;
		}
	}
	return mysql_query($write_sql, $session_mysql_conn);
}

function destroy($id)
{
	global $session_mysql_conn;

	if(null == $session_mysql_conn)
		return false;
	
	mysql_close($session_mysql_conn);
	$session_mysql_conn = null;
}

function gc($maxlifetime)
{
	global $session_mysql_conn;
	if(null == $session_mysql_conn)
		return false;
	
	$t = time() - $maxlifetime;
	$d = date("Y-m-d h:i:s",$t);
	$delete_sql = "delete from session where ctime < '$d'";
	
	return mysql_query($delete_sql, $session_mysql_conn);
}

function set_session_mysql($s_mysql_host, $s_mysql_user, $s_mysql_pwd, $s_mysql_db)
{
	global $session_mysql_host;
	global $session_mysql_user;
	global $session_mysql_pwd;
	global $session_mysql_db;
	
	$session_mysql_host = $s_mysql_host;
	$session_mysql_user = $s_mysql_user;
	$session_mysql_pwd = $s_mysql_pwd;
	$session_mysql_db = $s_mysql_db;
	
	session_set_save_handler("open", "close", "read", "write", "destroy", "gc");	
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值