账户中心 退出系统
开发文档 资讯·分享 技术交流 会员登录
phpGrace GSCMS 公众号系统
session 操作

session 操作概述

1 phpGrace 封装了 grace\tool\session 类来实现 session 操作,可以通过配置来设置 session 的存储类型,实现 session 多服务器共享等功能;
2 内置的 session 相关函数优化了 session 操作机制,解决了 session 锁死问题,可以有效应对高并发请求;

session 配置

grace\tool\session 类需要在构造时传递 session 配置,如果您不传递任何配置数据,系统会在站点配置中 ( appConfig/站点目录/base.php )寻找 session 配置数据,一般情况下一个站点使用一份 session 配置即可。
配置说明 :

1 file 文件形式存储( 存储位置 appData/站点目录/base.php ),只需要设置 type = file 即可;
2 redis 将 session 数据统一保存至 redis 服务器,需要配置主机地址、端口、密码;
3 memcahe 将 session 数据统一保存至 memcahe 服务器,需要配置主机地址、端口;
<?php
/* 基础配置 */
return array(
    /* session 配置 */
    'session' => array(
        // 使用的形式
        'type' => 'file',
        // 主机地址
        'host' => '127.0.0.1',
        // 端口
        // redis    默认 6379
        // memcache 默认端口 11211
        'port' => '6379',
        // redis 或 memcache 服务对应的密码
        'password' => ''
    ),
    // 其他自定义配置
);

set($name, $val) 设置 session

功能 : 设置 session 
参数 : 键名称, 值 ( 如果 $val 为一个键值对数组,$name 参数将被忽略,可以实现基于 $val 的批量注册 )

get($name)  获取指定的 session

功能 : 获取指定 session 的值 
参数 : session 名称

remove($name) 删除 session

功能 : 删除指定 session 的值 
参数 : session 名称 ( 如果 $name 为一个数组,可以实现基于 $name 值的批量删除 )

相关说明

您也可以使用 php 自带的 session 机制来完成 session 的操作。

演示代码

<?php
namespace grace\controller;
use grace\grace;
use grace\tool\session;

class index extends grace{

    // 依赖注入形式
    public function index(session $session){
        $session->set('uid', 10000);
        // 批量注册
        $session->set('', array(
            'session1' => 's-1',
            'session2' => 's-2',
        ));
    }

    // 实例化对象形式
    public function show(){
        // 注册为控制器属性可以在视图共享 session 操作对象
        $this->session = new session();
        echo $this->session->get('uid');
    }

}

视图文件中使用 session 对象

<div style="padding:100px;">
    session[uid] : <?php echo $this->session->get('uid');?>
</div>