|
定制php4的session功能(3) -> 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很容易,我们只需要从数据库中删除这个键值。
sess_gc($maxlifetime); 处理过期session也很容易,我们只需要从数据库中删除过期session().
作为结束这个小教程,希望你在扩展php4的session处理时有个好感觉。 这个范例只是简单的示范了你怎样做才能扩展它们使其适应你的需要,如果你找到什么bug的话,请让我知道:)
faq: 如果你担心session文件在/tmp目录中和别的虚拟机混淆,正好将它们存到别处。 这就是为什么有session.save_path选项的原因。 如果你担心性能的话你可以考虑将session存在共享内存中。你只需要在编译php时加上MM支持(--with-mm)并指定sessio.save_handler 为 mm 在.htAccess中,php.ini中或httpd.conf中。
我觉得只有多台机器要保存session时才会用到数据库。 (最后这句实在不好译,自已看吧)
session_dbm.php ========================================================================= <? /* ------------------------------------------------------------------------ * session_dbm.php * ------------------------------------------------------------------------ * PHP4 DBM Session Handler * Version 1.00 * by Ying Zhang (ying@zippydesign.com) * Last Modified: May 21 2000 * * ------------------------------------------------------------------------ * TERMS OF USAGE: * ------------------------------------------------------------------------
|