3.1.2 SessionHandlerInterface接口

理解Handler

首先,让我们来理解一下Handle这个词,中文翻译可当『处理』之意理解。在LAMP架构中,Handle通常均指处理来自客户端的请求(Handle the requests of client),而服务器端对应用于处理这个请求的进程或程序称作为:Handler。如Apache服务器的SetHandler与AddHandler配置项,在Apache中,每个模块本质上都可以看作是一个Handler,利用Hooking机制可分别针对不同目的,handle不同类型的客户端请求。如modrewrite、mod_proxy、mod_authn*、mod_session等,依次类比,SessionHandlerInterface可理解为一个用于处理Session的模块接口。

SessionHandlerInterface接口说明

在PHP中,开发者用户可以实现自定义的session机制:先实现SessionHandlerInterface接口,然后使用session_set_save_handler函数注册已实现的自定义Handler类。 SessionHandlerInterface接口定义了一套创建session handler的原生函数,其具体定义如下:

SessionHandlerInterface接口实现

2.1节介绍过session.save_handler配置选项,它定义了session信息的存储机制,默认为文件。以下是一个来自官网的定制session handler的例子。其session handler的存储方式也是文件,只是session信息的存、取以及GC略有不同,比较简单,仅用于说明自定义session handler的实现方式。

然后通过session_set_save_handler注册实现的自定义类即可

最后,直接通过全局变量$_SESSION存、取session信息。

总结一下,从上面暴露的Session API可以看出:Session机制的用户自定义实现主要涉及以下几个问题:

  • 注册为PHP的扩展模块
  • session信息的读写
  • 过期session信息的清理
  • $_SESSION变量的填充与更新

References

1、http://php.net/manual/en/class.sessionhandler.php

2、http://php.net/manual/en/class.sessionhandlerinterface.php

results matching ""

    No results matching ""