Session

    如果想要启用 Session,需要在配置文件中进行设置。

    在服务器配置文件中:

    其中每一种存储方式还有特别的配置项,请看下文。

    1. 'SessionFile' => [
    2. ]
    3. ]

    Redis

    1. 'beans' => [
    2. 'SessionRedis' => [
    3. // Redis连接池名称
    4. 'poolName' => '',
    5. // Redis中存储的key前缀,可以用于多系统session的分离
    6. // 'keyPrefix' => 'imi.',
    7. ]

    根据你选用的存储驱动类,配置在对应的节里,下面以文件驱动演示

    可以选用的序列化类:

    PHP序列化:\Imi\Util\Format\PhpSerialize::class

    PHP Session 序列化:\Imi\Util\Format\PhpSession::class (兼容 php-fpm 默认的 Session 存储格式)

    引入 Session 类

    1. use Imi\Server\Session\Session;
    1. // 获取值
    2. Session::get('aaa');
    3. // 获取值,如果不存在则返回默认值
    4. // 获取$session['a']['b']的值
    5. Session::get('a.b');
    6. // 获取$session[前缀]['aaa']的值,前缀在配置文件中设置

    写入

    删除

    1. Session::delete($name)
    1. Session::once($name, $default = false)

    清空

    自定义 Session ID 获取方式

    config.php:

    1. [
    2. 'beans' => [
    3. \Imi\Server\Session\Middleware\HttpSessionMiddleware::class => [
    4. 'sessionIdHandler' => function(\Imi\Server\Http\Message\Request $request){
    5. // 举例,比如希望从 header 中获取
    6. return $request->getHeaderLine('X-Session-ID');
    7. },
    8. ],