aloframework / session
基于Redis或MySQL的会话管理
2.0
2016-11-07 22:04 UTC
Requires
- php: >=5.5
- aloframework/common: ^2.0
- aloframework/config: ^2.0
- aloframework/log: ^3.0
Requires (Dev)
- aloframework/handlers: ^3.0
- symfony/var-dumper: ^2.7 || ^3.0
This package is not auto-updated.
Last update: 2024-09-14 18:09:29 UTC
README
基于MySQL & Redis的会话管理
最新版本API文档: https://aloframework.github.io/session/
安装
安装通过Composer进行
composer require aloframework/session
MySQL的额外步骤
基于MySQL的会话需要额外一步,具体描述在 setup/MySQL.md。
使用
所有会话使用相同的接口(除构造函数外),在此示例中,将使用Redis。
<?php use AloFramework\Session\RedisSession; //Make our Redis connection $redis = new Redis(); $redis->connect('127.0.0.1'); //Start our session. The redis parameter can be omitted, in which case the code above will be run automatically // within the class $sess = (new RedisSession($redis))->start(); //That's it - you can now use the handler just like you would use a regular PHP session. $_SESSION['foo'] = 'bar'; unset($_SESSION['qux']); echo $_SESSION['baz']; //Additionally, you can work directly with the RedisSession object via the ArrayAccess interface and magic // getter+setter: $sess->foo = 'bar'; $sess['foo'] = 'bar'; unset($sess['foo']); echo $sess->foo; echo $_SESSION['foo'];
日志记录
应将一个 \Psr\Log\LoggerInterface
实例传递给构造函数以使用基本日志记录(几乎所有内容都是调试级别)。如果没有传递,将创建一个带有默认参数的 \AloFramework\Log\Log
实例。
配置
配置通过 Configuration 类 完成。
Config::CFG_TIMEOUT
- 会话寿命(以秒为单位)(默认为300)Config::CFG_COOKIE_NAME
- 会话cookie的命名方式(默认为AloSession)Config::CFG_FINGERPRINT_NAME
- 会话密钥,用于存储会话劫持预防指纹。您不能设置与该名称相同的任何会话密钥,因为这将使会话无效。默认为 _fp_。Config::CFG_PREFIX
- 如果使用基于缓存的处理器,则如何前缀会话密钥。默认为 _alo_sess_。Config::CFG_SESSION_ID_ALGO
- 用于会话ID的哈希算法。默认为sha512。Config::CFG_TABLE
- 如果使用基于MySQL的处理程序,则使用该表。默认为 alo_session。Config::CFG_SECURE
- 如果设置为 true,则仅通过 HTTPS 连接发送会话 cookie(默认为 true)。Config::CFG_GC
- 垃圾收集概率。如果设置为 100(默认值),则在会话启动时有 1/100(即 1%)的概率发生垃圾收集事件。这仅用于MySQLNoEventSession
。Config::CFG_SAVE_CLI
- 是否在 CLI 模式下保存/写入会话数据(默认:false)Config::CFG_TOKEN
- 用于标识令牌数据的会话密钥。您不得使用此密钥设置任何会话值,因为这将使令牌无效。默认为 _tk_。