Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话\u重新生成\u id(true)性能影响_Php_Session - Fatal编程技术网

PHP会话\u重新生成\u id(true)性能影响

PHP会话\u重新生成\u id(true)性能影响,php,session,Php,Session,PHP函数session\u regenerate\u id(true)频繁使用(我的意思是在每次页面加载和每次AJAX调用中重新生成session id)是否会对性能产生不良影响? 如果是这样,它是否还取决于$\u会话数组中存储了多少变量?这可能会很昂贵,特别是如果您使用的是覆盖会话ID创建的自定义会话处理程序 默认情况下,开销为: 获取当前系统时间的调用 两次哈希表查找以查找$服务器['REMOTE\u ADDR'] 打印生成的63字节格式字符串 在此sprintf输出上运行的加密哈希 从/

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

这可能会很昂贵,特别是如果您使用的是覆盖会话ID创建的自定义会话处理程序

默认情况下,开销为:

  • 获取当前系统时间的调用
  • 两次哈希表查找以查找$服务器['REMOTE\u ADDR']
  • 打印生成的63字节格式字符串
  • 在此sprintf输出上运行的加密哈希
  • 从/dev/random读取32字节的熵
  • 散列数据
  • 将输出转换为字符串
  • 如果您有一个带有
    session\u set\u save\u handler
    的自定义句柄集,该句柄集为
    $create\u sid
    提供有效参数,则将改用该句柄集。在这种情况下,开销完全取决于您指定的保存处理程序


    但是,如果默认行为对您的性能有明显的影响,我会感到惊讶。这与来自忽略Cookie的客户端的大量请求没有什么不同。

    重新生成会话时,会创建一个新文件,其中包含旧文件的内容,并删除旧文件。PHP需要写和读一个文件,这些操作很慢。但是,为什么要为每个请求重新生成会话id?我正在尝试保护网站免受会话固定攻击,这是要采取的对策之一,但我想知道在不影响性能的情况下重新生成会话id的频率。对于“何时重新生成会话?”这个问题,我的答案是“不要对每个请求都这样做”。只是偶尔,在一段时间后或在某些操作之后才这样做。(即登录)重新生成它的合理请求量(页面加载/AJAX调用)是多少?那么在随机的20-30个请求(页面加载/AJAX调用)的基础上重新生成ID是否合理如果使用默认的
    会话\u设置\u保存\u处理程序
    ,我认为它不应该在现代硬件上造成重大问题