PHP使用session_set_save_handler

时间:2011-12-08 08:49:20

标签: php session

下面直接从php手册中复制,我不知道如何设置它,我只需要做两件事......

  1. 在会话销毁时编写一些代码
  2. 将session_cache_expire设置为20分钟 - 在课堂上或作为单独的电话进行?
  3. 每次在页面上有session_start时,是否需要为每个实例运行sessionsavehandler()?如果有人能够概述我需要采取的步骤来使用这个很棒的课程。

    <?php
     new SessionSaveHandler();
     ?>
    
     <?php
    
    class SessionSaveHandler {
         protected $savePath;
         protected $sessionName;
    
        public function __construct() {
             session_set_save_handler(
                 array($this, "open"),
                 array($this, "close"),
                 array($this, "read"),
                 array($this, "write"),
                 array($this, "destroy"),
                 array($this, "gc")
             );
         }
    
        public function open($savePath, $sessionName) {
             $this->savePath = $savePath;
             $this->sessionName = $sessionName;
             return true;
         }
    
        public function close() {
             // your code if any
             return true;
         }
    
        public function read($id) {
             // your code
         }
    
        public function write($id, $data) {
             // your code
         }
    
        public function destroy($id) {
             // your code
         }
    
        public function gc($maxlifetime) {
             // your code
         }
     }
    
    new SessionSaveHandler();
    
    ?> 
    

1 个答案:

答案 0 :(得分:1)

  

我不确定如何设置它,每次在页面上有session_start时,是否需要为每个实例运行sessionsavehandler?

是的,您只需在调用session_start之前创建 SessionSaveHandler 的新实例,而不是

  

我想改变sesison_cache过期,还是应该在课堂上这样做?

您只是覆盖默认存储处理程序;其余的保持不变。因此,请像以前一样使用session_cache_expire

  

如果有人能够概述我需要采取的步骤来使用这个很棒的课程。

如前所述,您只是重写了PHP的默认会话存储处理程序。在调用session_start之前,而不是 创建会话存储处理程序 SessionSaveHandler 的新实例。除此之外,没有什么不同于使用PHP的默认会话处理程序。