3.7 管理会话数据和超时
当与session一起使用时得考虑到另一问题就是他们的使用可导致同步问题。由于HTTP的无状态特性,当用户完成应用时是没有办法知道的。而与此相反,应用程序不使用HTTP协议,就可以面临一个关于删除连接或清理状态的事实,它会代表用户即使忘记去使用logout(注销)常规,这往往会引发case(事件)。然而,当用户正在通过网络开展session,服务器已经无法知道,如果用户意外或有目的地结束session.因此,对session的数据能保存多久作出了一个决定。
由于在MySQL 5.0里存储过程的介绍,我们现在提供了一个有效的方法来处理session数据的常规分析、删除和管理超时。最主要的好处就是,它与数据库提供了一个更有效的交互方式,因为你没有准备和执行数个不同的查询来执行相同的操作。(应该指出在一个带存储过程或不带的会话管理架构中使perl,php,java或.net )
使用MySQL数据库,我们能创建表来存储下列关于session的信息:
--variables: 变量名和值。例如,在几秒内一个理想的会话超时变量;
--users:存储一个用户email,名字,密码、上次登录和访问次数;
--sessions: 存储cookie,userid,开始session和访问次数;
--logins: 这可能就包括一个过去登录的情况和登录失败的情况;
我们能使用存储过程来最小优化往返和对数据库的影响:
--login:检查login的凭证;
--cookies: 在cookie上返回一个userid;
--password: 更改或创建login和password;
--session维护:删除旧的session和历史性地归档。
下面是一个例子,关于在MySQL数据库里调用存储过程:

3.8 一个定制、独特的终端用户体验:
利用会话来创建一个定制、独特的终端用户体验。这就是说可以在对用户直接感兴趣的网页上来实现的。它是否以他们可能有兴趣的产品或广告,网页表现格式,或提醒他们注意特价或促销活动。有关会话的信息不仅导致更好的整体客户满意度更好,而且加强他们忠诚度的可能性,并返回到购买更多的商品和服务。无论您将打算存储的会话数据是多么复杂或动荡。
在任何情况下,MySQL都提供了一个很好的存储介质。就像我们将看到的一个关于Evite的案例研究。没有使用MySQL可能无法实现让客户满意度个性化水平。