PHP session_regenerate_id(true) 性能影响
PHP session_regenerate_id(true) performance impact
PHP 函数 session_regenerate_id(true)
频繁使用(我的意思是在每次页面加载和每次 AJAX 调用时重新生成会话 ID)是否会对性能产生不良影响?
如果是这样,它是否还取决于 $_SESSION 数组中存储了多少变量?
它可能很昂贵,尤其是当您使用覆盖会话 ID 创建的自定义会话处理程序时。
默认情况下,开销为:
- 获取当前系统时间的调用。
- 两次哈希 table 查找以找到 $_SERVER['REMOTE_ADDR']
- 生成打印的 63 字节格式字符串
- 此 sprintf
输出的加密散列 运行
- 从 /dev/random 中读取 32 字节的熵
- 散列数据
- 将输出转换为字符串
如果您使用 session_set_save_handler
设置了自定义处理程序,该处理程序为 $create_sid
提供了有效参数,将改为使用它。在这种情况下,开销完全取决于您指定的保存处理程序。
但是,如果默认行为对您有明显的性能影响,我会感到惊讶。如果您有一堆忽略 cookie 的客户端请求,这实际上没有什么不同。
PHP 函数 session_regenerate_id(true)
频繁使用(我的意思是在每次页面加载和每次 AJAX 调用时重新生成会话 ID)是否会对性能产生不良影响?
如果是这样,它是否还取决于 $_SESSION 数组中存储了多少变量?
它可能很昂贵,尤其是当您使用覆盖会话 ID 创建的自定义会话处理程序时。
默认情况下,开销为:
- 获取当前系统时间的调用。
- 两次哈希 table 查找以找到 $_SERVER['REMOTE_ADDR']
- 生成打印的 63 字节格式字符串
- 此 sprintf 输出的加密散列 运行
- 从 /dev/random 中读取 32 字节的熵
- 散列数据
- 将输出转换为字符串
如果您使用 session_set_save_handler
设置了自定义处理程序,该处理程序为 $create_sid
提供了有效参数,将改为使用它。在这种情况下,开销完全取决于您指定的保存处理程序。
但是,如果默认行为对您有明显的性能影响,我会感到惊讶。如果您有一堆忽略 cookie 的客户端请求,这实际上没有什么不同。