PHP如何将Session存储在数据库中(6)
这个系统中唯一的技巧是如何让PHP使用我们的静态函数作为保存处理函数。PHP5的面向对象变成支持很强大,所以可以不提供回调函数的名称字符串,而是传递一个数组。这个数组中有两个值,一个值表示类名,另一个值表示经态函数的方法名。例如,要使用DatabaseSessionStorage::open作为回调函数,只需传递PHP:
array( ‘DatabaseSessionStorage’ , ‘open’)
所以,在这个基于数据库的会话持久化解决方案中,最后一步是调用session_set_save_hander函数,让PHP开始使用我们的静态成员函数:
session_set_save_hander(
array( ‘DatabaseSessionstorage’, ‘open’),
array( ‘DatabaseSessionstorage’, ‘close’),
array( ‘DatabaseSessionstorage’, ‘read ‘),
array( ‘DatabaseSessionstorage’, ‘write ‘),
array( ‘DatabaseSessionstorage’, ‘destroy’),
array( ‘DatabaseSessionstorage’, ‘gc’)
)
这为页面提供了一种更健全的会话数据存储解决方案。如果将DatabaseSessionStorage类和session_set_save_hander函数调用放在一个包含文件中,那么可以通过在脚本顶部添加一下代码,在每个脚本中获得这个功能:
<?php
require_once(’db_session.inc’);
session_start();
//etc. …
?>
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments
还没有评论。
发表评论