轻松实现session的mysql处理

原创 2002年01月07日 10:13:00

      通常,session都是保存在临时文件里的,但是,要是把它保存在数据库里,就会给我们带来很多好处,比如统计在线人数之类的。废话不说了,看程序:

<?php
include("db_mysql.inc");

function open ($save_path, $session_name) {
  global $db,$REMOTE_ADDR;
  $db->query("delete from Sessions where SessionLast<date_sub(now(),interval
1 hour)");
  if($db->query("select * from Sessions where SessionID='".session_id()."'")
&& $arry=$db->fetch_array())
     $db->query("update Sessions set SessionLast=NOW() where
SessionID='".session_id()."'");
  else $db->query("insert into Sessions set
SessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'"
);
  return(true);
}

function close()

  return true;
}

function read ($id) {
  global $db;
    if(!$db->query("select SessionID from Sessions where SessionID='$id'")
|| $db->num_rows()<=0)return false;
  $SQL="select SessionData from Sessions where SessionID='$id'";
  $db->query($SQL);
  list($sess_data)=$db->fetch_row();
  return($sess_data);
}

function write ($id, $sess_data) {
  global $db;
  if(!$db->query("select SessionID from Sessions where SessionID='$id'") ||
$db->num_rows()<=0)return false;
  if($db->query("update Sessions set
SessionData='$sess_data',SessionLast=NOW() where SessionID='$id'"))
  return true;
  else return false;
}

function destroy ($id) {
  global $db;
  $db->query("delete from Sessions where SessionID='$id'");
}

function gc ($maxlifetime) {
  return true;
}

session_set_save_handler ("open", "close", "read", "write", "destroy","gc");

session_start();

?>
注:
数据表:Sessions
CREATE TABLE Sessions (
   SessionID varchar(50) NOT NULL,
   SessionName varchar(50) NOT NULL,
   SessionData blob,
   SessionLast datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
   PRIMARY KEY (SessionID)
);

javaee之session的购物车练习

通过面向对象的分层和设计: 一、实体层 import java.io.Serializable; public class Product implements Serializable { ...
  • css1223mjf
  • css1223mjf
  • 2016年07月22日 23:45
  • 350

分布式Session原理,最简单而高效的实现方式

分布式Session原理
  • collonn
  • collonn
  • 2016年09月29日 15:34
  • 2653

配置Tomcat将Session持久化到MySQL

1、首先,在conf/context.xml中文件中,将以下的配置加入到根结点下:
  • liuxiao723846
  • liuxiao723846
  • 2015年11月26日 11:18
  • 1246

session 的cgi 简单实现

http://blog.csdn.net/wybing/archive/2004/12/29/233621.aspx
  • fanlix
  • fanlix
  • 2005年04月20日 11:25
  • 529

Mysql&nbsp;查看session连接数,状态

命令: show processlist;  如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。  show processlist;只列出前100条,如果...
  • feng27156
  • feng27156
  • 2013年11月22日 10:08
  • 12343

tomcat session实现原理

服务器端实现原理 Session在服务器端具体是怎么实现的呢?我们使用session的时候一般都是这么使用的: request.getSession()或者request.getSession(t...
  • zbuger
  • zbuger
  • 2016年03月17日 10:36
  • 1048

mysql查看session信息

显示哪些线程正在运行 show processlist; 获取timeout的变量 show global variables like "%timeout%";...
  • yfx000
  • yfx000
  • 2016年10月26日 14:53
  • 1355

XP轻松实现免激活升级

1.安装D版windows xp 2.打开注册表regedit 3.找到主键 Hkey_Local_Machine/Software/Microsoft/WindowsNT/CurrentVersio...
  • hpxcx
  • hpxcx
  • 2007年05月06日 14:20
  • 480

session/cache 过期如何实现?

naive的做法是,定时轮询,一个单独线程检查
  • binling
  • binling
  • 2014年10月27日 19:34
  • 476

如何使用OpenCV+Keras轻松破解验证码?

登录网站时必须输入的图片验证码可以用来识别访问者到底是人还是机器?
  • An_Feng_z
  • An_Feng_z
  • 2017年12月14日 14:25
  • 240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:轻松实现session的mysql处理
举报原因:
原因补充:

(最多只允许输入30个字)