当前位置: 网学 > 编程文档 > PHP > 正文

定制php4的session功能

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/17
下载{$ArticleTitle}原创论文样式
除非你修改了php.ini中的session路
径和名字设置。


sess_close();
在这个函数中,我们将简单地调用dbmclose()函数关闭DBM文件。


sess_read($key);
这儿我们仅仅调用dbmfetch()载入和参数$key相关连的session数据。
在载入一个session时,我们需要保证读入的不是一个过期数据,所以我们必须给session配上一个时间标记。

为什么?因为在它们失效,不管什么原因而没有被删掉时,我们不会意外地读入过期数据。这会是一个很大的禁忌。


我们知道DBM文件只保存 键/值 对,因此不得不在写session数据时将时间标记同" 值"一起写入,在读session数据时去掉。

任何已经过期的session将被忽略。看看这个源程序,它会让你更清楚。



sess_write($key, $val);
写入一个session,我们会使用dbmreplace()函数。注意,从上所述我们要保存过期时间标记在session中,所以我们要将时间标记绑到值上。

sess_destroy($key);
消毁一个session很容易,我们只需要调用dbmdelete()函数将它从session文件中删除。

sess_gc($maxlifetime);
过期数据收集在这儿有点令人讨厌但却是必需的,为了达到目的我们在循环扫描所有保存在DBM文件中的session并且删掉过期的。这会很慢因
为我们循环通过所有保存在这个文件中的所有session数据。

现在我们已经有了一个DBM session处理程序,太酷了!

现在,我们让这些session保存到mysql数据库中。

Mysql session处理程序
(This
我们的下一个范例是写一个将session数据存到mysql数据库的定制session处理程序。(这个在session_mysql.php文件中,见文章尾部)
在你有许多支持PHP的服务器并且你需要共享它们之间的session时你会想将session保存在数据库中的。(比如你服务于很多用户并且需要
负载平衡时)
You have a bunch of machines doing web/PHP stuff, a machine serving
你有一批机器作支持php的服务器,需要一台机器作你的普通数据库服务器,另外一台运行mysql数据库处理session。仅这样对大多数人来
说就具有很大的杀伤力的。:)(译注:可能意思是太酷了吧)

重要提示:
在你试验之前你的php必须支持mysql。(译注:这好象已经不成问题了,php现在已经内建mysql支持了)如果不是这样的话,事情会很难看,真的
很难看。
首先我们在mysql中创建一个session数据库,并且创建一个session表。先运行你的mysql客户端并且运行下面的命令:
mysql> CREATE DATABASE sessions;

mysql> GRANT select, insert, update, delete ON sessions.* TO phpsession@localhost
-> IDENTIFIED BY ''phpsession'';

mysql> CREATE TABLE sessions (
-> sesskey char(32) not null,
-> expiry int(11) unsigned not null,
-> value text not null,
-> PRIMARY KEY (sesskey)
-> );

下一步,修改session_mysql.php文件的$SESS_DB* 变量使其匹配你机器上的数据库设置。在你继续之前确信一切看起来良好。

我们的6个函数会依靠mysql数据库工作:


sess_open($sess_path, $session_name);
我们需要调用mysql_Pconnect(),然后用mysql_selsect_db()选择session数据库 。$sess_path 和$session_name 参数
是无关的但我们不得不保留它们。(译注:原文如此,可能是为了兼容吧)

sess_close();
我们要打开一个mysql永久连接因此我们在这个函数中不做任何事。(一个空函数)


sess_read($key);
这个窍门就是一个简单的select语句,我们想要读取所给的$key的session数据,需要指定过期时间信息。

sess_write($key, $val);
写session数据用了一个小把戏。我们首先试图用insert语句保存session数据到数据库中。如果失败(主键约束)则意味着这个key已经写入,然后我们
不得不用一update语句代替。

sess_destroy($key);
删除一个session很容易,我
  • 上一篇资讯: PHP的FDF文档支持
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号