百科库百科库百科库

2022年01月15日整理发布:php怎样修改session的生存时间

让我们向您解释php如何修改会话的生存期。相信朋友们也应该密切关注这个话题。现在让我们和朋友们谈谈php是如何修改会话生存期的。边肖还收集了php如何修改会话生存期的相关信息。我希望你看到后会喜欢。

首先,让我们手动设置会话的生存期,如下所示:

<?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

会话_开始;

//保存一天

$ lifeTime=24 * 3600

setcookie(session_name,session_id,time $lifeTime,'/');

?& gt实际上Session还提供了一个函数session _ set _ cookie _ params要设置会话的生存期,必须在调用session_start函数之前调用该函数:

<?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

//保存一天

$ lifeTime=24 * 3600

session _ set _ cookie _ params($ LifeTime);

会话_开始;

$ _ SESSION[' admin ']=true;

?& gt如果客户端使用IE 6.0 session _ set _ cookie _ params;设置函数cookie会出现一些问题,所以我们手动调用setcookie函数来创建Cookie。

php中的会话到期时间设置

网上很多人给出了答案:修改php配置文件中的session.gc_maxlifetime。如果你想了解更多关于会话回收机制的信息,请继续阅读。(本文环境php5.2)

概述:每个php请求都有1/100的概率(默认值)触发“会话回收”。如果发生“会话回收”,将检查/tmp/sess_*的文件。如果最后一次修改时间超过1440秒(gc_maxlifetime的值),删除它们意味着这些会话已经过期。

1.会话在服务器端是如何存在的(通常是带有PHP模块的Apache)?

默认php会将会话保存在/tmp目录中。文件名为Sess _ 01 ab 840166 FD 1 DC 253 E3 B4 a30 f0b 8381。每个文件对应一个会话。

more/tmp/sess _ 01 aab 840166 FD 1 DC 253 E3 B4 a3f 0 b 8381

用户名| s:9:“江风”;admin | s 33601:“0 ”;

#变量名|类型:长度:值在此删除会话文件意味着相应的会话无效。

(学习视频分享:php视频教程)

2.会话在客户端(通常是浏览器)是如何存在的?

在浏览器端,您只需要保存会话标识(服务器端生成的唯一标识)。有两种方法可以保存它:在cookie和url中。如果将会话ID保存在cookie中,可以看到浏览器的cookie中有一个PHPSESID变量。如果是通过URL传递的,可以看到看起来像:index.php?sesid=01 aaab 840166 FD 1 DC 253 E3 B4 a3f 0 b 8381 URL(在服务器端,使用session.use_cookies控制使用哪种方法)

3.php如何在服务器端判断会话文件是否过期?

如果“上次修改时间”超过gc_maxlifetime(默认值为1440)秒,则认为该会话文件已过期。如果此文件在下一次会话回收中未被更改,此会话文件将被删除(会话将过期)。

简单来说,如果我登录一个网站,如果我在1440秒内(默认值)没有操作它,那么相应的会话就被认为是过期了。

因此,修改php.ini文件中的gc_maxlifetime变量可以延长会话的到期时间:(例如,我们将到期时间修改为86400秒)

Session.gc_maxlifetime=86400,然后重新启动您的web服务(通常是apache)。

注意:php5中的会话过期使用回收机制。这里的设定时间是86400秒。如果会话在86,400秒内没有被修改,它将在下一次“回收”中被删除。

3.会话“回收”何时发生?

默认情况下,每个php请求都有1/100的回收概率,因此可以简单地理解为“每100个php请求就发生一次回收”。该概率由以下参数控制

# GC _概率/GC _除数GC _概率/GC _除法器。

session.gc_probability=1

Session.gc _ divisor=100注1:假设这是gc_maxlifetime=120的情况。如果会话文件的最后一次修改时间是在120秒之前,那么这个会话将仍然有效,直到下一次回收(1/100的概率)发生。

2:注意:如果您的会话使用session.save_path将session保存到其他位置,会话回收机制可能不会自动处理过期的会话文件。此时需要定期手动(或crontab)删除过期的会话:CD/path/to/sessions;find -cmin 24 | xargs rm

4.一些特殊情况

因为回收机制会检查文件的“最后修改时间”,如果一个会话是活动的,但是会话的内容没有改变,那么对应的会话文件也没有改变,回收机制会把它当成一个很长时间没有活动的会话来删除。这是我们不想看到的。我们可以通过添加以下简单代码来解决这个问题:

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

if(!isset($ _ SESSION[' last _ access '])| |(time-$ _ SESSION[' last _ access '])60)

$_SESSION['last_access']=时间;

?代码将尝试每60秒修改一次会话。

摘要:如果要修改会话到期时间,请修改变量gc_maxlifetime。php5的Session采用被动垃圾收集机制。过期的会话文件不会自行消失,而是通过触发“回收”来处理过期的会话。

相关推荐:php入门以上就是php如何修改会话生存期的细节!

来源:php中文网站

百科库提供各种知识问答,各种百科小知识,生活常识问答,生活百科,行业经验,为用户精准解决疑问。

未经允许不得转载:百科库 » 2022年01月15日整理发布:php怎样修改session的生存时间