PHP:会话的默认生存期是多less?

如果我打了一个页面,调用session_start() 。 我需要等多久,所以如果我要刷新页面,我发了一个新的会话ID?

检查php.ini为session.gc_maxlifetime设置的值是以秒为单位的ID生存期。

我相信默认是1440秒(24分钟)

http://www.php.net/manual/en/session.configuration.php

编辑:正如一些评论指出,上述不完全准确。 关于为什么以及如何实现会话生命周期的精彩解释可以在这里find:

如何在30分钟后过期PHP会话?

session.gc_maxlifetime指令(“gc”用于垃圾回收)的默认值是1440秒或24分钟。 请参阅手册中的“Session Runtimeconfiguration”页面:

http://www.php.net/manual/en/session.configuration.php

您可以在php.ini或.httpd.conf文件中更改此常数(如果您有权访问它们),或者在您的网站上的本地.htaccess文件中。 要使用.htaccess方法将超时设置为一个小时,请将此行添加到站点根目录中的.htaccess文件中:

 php_value session.gc_maxlifetime "3600" 

如果您位于共享主机上,或者您承载了多个未更改默认设置的网站,请小心。 默认的会话位置是/ tmp目录,垃圾收集例程将每24分钟运行一次,这些其他站点(并且无论应该保留多长时间,都会清除会话)。 请参阅手册页或本网站上的说明以获得更好的解释。

答案是使用session.save_path将会话移动到另一个目录。 这也有助于防止坏人从默认的/ tmp目录中劫持访问者的会话。

据PHP.net网站上的一位用户说,他保持会话活动的努力失败了,所以他不得不做出一个解决方法。

 <?php $Lifetime = 3600; $separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/"; $DirectoryPath = dirname(__FILE__) . "{$separator}SessionData"; //in Wamp for Windows the result for $DirectoryPath //would be C:\wamp\www\your_site\SessionData is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777); if (ini_get("session.use_trans_sid") == true) { ini_set("url_rewriter.tags", ""); ini_set("session.use_trans_sid", false); } ini_set("session.gc_maxlifetime", $Lifetime); ini_set("session.gc_divisor", "1"); ini_set("session.gc_probability", "1"); ini_set("session.cookie_lifetime", "0"); ini_set("session.save_path", $DirectoryPath); session_start(); ?> 

在SessionData文件夹中将存储用于保持会话信息的文本文件,每个文件将具有类似于“sess_a_big_hash_here”的名称。

这取决于你的PHP设置…
使用phpinfo()并查看会话章节。 有像session.gc_maxlifetimesession.cache_expiresession.cookie_lifetime这样的值会影响会话生存期

编辑:这就像马丁之前写

但要注意,在大多数xampp / ampp /…-设置和一些Linux的destributions它是0,这意味着该文件将永远不会被删除,直到你在脚本内(或通过壳脏)

PHP.INI:

 ; Lifetime in seconds of cookie or, if 0, until browser is restarted. ; http://php.net/session.cookie-lifetime session.cookie_lifetime = 0