Archive for 09月, 2008

通过医疗赔偿系统学习PHP如何处理XML(1)

XML作为一种用于描述数据的标记语言,很容易使用并且可以用于定制扩展,并且在非常适合用于以下用途


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. …
?>


PHP如何将Session存储在数据库中(5)

最后,destroy函数删除具有给定会话ID的所有记录,gc函数删除过期的会话数据,也就是比当前时间减去传递的maxLifeTime参数(秒数)要陈旧的会话数据。