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';s垃圾回收删除启动脚本的会话_Php_Session - Fatal编程技术网

可以使用php';s垃圾回收删除启动脚本的会话

可以使用php';s垃圾回收删除启动脚本的会话,php,session,Php,Session,假设我的php.ini文件中有这些设置(当然不是“正常”设置): 这意味着在每次会话初始化中,垃圾收集都将运行并清理所有早于一分钟的会话 假设只有一个用户连接到服务器并运行一个初始化会话的脚本。如果他/她在70秒后再次运行它(或者无论如何超过60秒),他/她自己的会话会被删除吗 换句话说,垃圾收集是在脚本执行之前还是之后进行的?垃圾收集应该在脚本运行之前进行。这是正确的行为。我的意思是,会话应该在gc\u maxlifetime之后的任何时刻过期。PHP应该在运行脚本之前进行垃圾收集,以确保其正

假设我的php.ini文件中有这些设置(当然不是“正常”设置):

这意味着在每次会话初始化中,垃圾收集都将运行并清理所有早于一分钟的会话

假设只有一个用户连接到服务器并运行一个初始化会话的脚本。如果他/她在70秒后再次运行它(或者无论如何超过60秒),他/她自己的会话会被删除吗


换句话说,垃圾收集是在脚本执行之前还是之后进行的?

垃圾收集应该在脚本运行之前进行。这是正确的行为。我的意思是,会话应该在
gc\u maxlifetime
之后的任何时刻过期。PHP应该在运行脚本之前进行垃圾收集,以确保其正常工作

然而,我很好奇,尝试了一下,我的测试证实了我的假设

这是一个简单的测试。在给定的设置中,我测试了会话中存储的变量在X秒后是否存在,而不是。因此,垃圾收集是在运行脚本之前完成的


注意:如果使用cookie,还必须将会话cookie生存期设置为过期。

内置会话GC在会话初始化()期间启动,即通过
会话启动()函数启动。当
session.autostart
为true时,将在第一行代码之前执行
session\u start()

无论何时发生,如果会话未过期,它将不会被垃圾收集。会话超时是完全不同的设置。
session.gc_maxlifetime = 60
session.gc_probability = 1
session.gc_divisor = 1