php session文件存储调用方式

class FileSessionHandler implements SessionHandlerInterface
{
    private $savePath;
    
    /**
     * 调用 session_start 调用
     *
     * @param string $savePath
     * @param string $sessionName
     * @return bool
     */
    function open($savePath, $sessionName)
    {
        echo "open.\n";
        $this->savePath = $savePath;
        if (!is_dir($this->savePath)) {
            mkdir($this->savePath, 0777);
        }

        return true;
    }
    
    /**
     * session 执行完毕调用
     *
     * @return bool
     */
    function close()
    {
        echo "close.\n";

        return true;
    }
    
    /**
     * 获取session数据调用
     *
     * @param string $id
     * @return string
     */
    function read($id)
    {
        echo "read.\n";

        return (string)@file_get_contents("$this->savePath/sess_$id");
    }
    
    /**
     * session赋值调用
     *
     * @param string $id
     * @param string $data
     * @return bool
     */
    function write($id, $data)
    {
        echo "write.\n";

        return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
    }
    
    /**
     * 调用session_destory
     *
     * @param string $id
     * @return bool
     */
    function destroy($id)
    {
        echo "destroy.\n";

        $file = "$this->savePath/sess_$id";
        if (file_exists($file)) {
            unlink($file);
        }

        return true;
    }
    
    /**
     * 过期调用
     *
     * @param int $maxlifetime
     * @return bool
     */
    function gc($maxlifetime)
    {
        echo "gc.\n";

        foreach (glob("$this->savePath/sess_*") as $file) {
            if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
                unlink($file);
            }
        }

        return true;
    }
}

相关推荐