PHP session_regenerate_id(true) 性能影响

PHP session_regenerate_id(true) performance impact

PHP 函数 session_regenerate_id(true) 频繁使用(我的意思是在每次页面加载和每次 AJAX 调用时重新生成会话 ID)是否会对性能产生不良影响? 如果是这样,它是否还取决于 $_SESSION 数组中存储了多少变量?

它可能很昂贵,尤其是当您使用覆盖会话 ID 创建的自定义会话处理程序时。

默认情况下,开销为:

  1. 获取当前系统时间的调用。
  2. 两次哈希 table 查找以找到 $_SERVER['REMOTE_ADDR']
  3. 生成打印的 63 字节格式字符串
  4. 此 sprintf
  5. 输出的加密散列 运行
  6. 从 /dev/random 中读取 32 字节的熵
  7. 散列数据
  8. 将输出转换为字符串

如果您使用 session_set_save_handler 设置了自定义处理程序,该处理程序为 $create_sid 提供了有效参数,将改为使用它。在这种情况下,开销完全取决于您指定的保存处理程序。

但是,如果默认行为对您有明显的性能影响,我会感到惊讶。如果您有一堆忽略 cookie 的客户端请求,这实际上没有什么不同。