会话在网站Baker中过期

时间:2011-01-05 07:47:09

标签: php session websitebaker

我在哪里可以设置WebsiteBaker的默认会话过期时间?它默认在10MINS中销毁。我想在开发期间设置更多的分钟/小时,之后想要更改为默认值或x MINS。

请帮我等你回复。

由于

3 个答案:

答案 0 :(得分:1)

Websitebaker至少目前的2.8.2版本和upcomming 2.8.3版本完全依赖服务器设置来保持会话生命周期。

如果您想要不同的会话设置,可以在以下之前将设置添加到config.php:

 require_once(WB_PATH.'/framework/initialize.php');

仅当您的服务器允许脚本覆盖时才有效。

另一种选择是使用.htaccess文件或更改服务器设置。

答案 1 :(得分:0)

我对网站baker一无所知,所以找到会话的开始位置(在项目中搜索session_start()的所有文件;),然后在该行之前使用:

//first parameter expects the number of seconds session cookie should be kept by the 
//browser , in our case 10 seconds
session_set_cookie_params(10);

或者另一个选择,在你的网站baker app(index.php)的根目录添加该行,你应该准备好了。

注意:如果会话cookie被浏览器破坏,那么php会在你调用session_start();时发出另一个会话ID,所以我们不会关心最后一个会话是否仍被视为活动/活动,就像你在'重新PHP脚本,你将有一个空的$_SESSION。另外,您可以设置ini_set('session.gc-maxlifetime', 10);,以便垃圾收集器删除以前的会话,以防您将会话存储在磁盘上。

答案 2 :(得分:0)

我认为你自己没有改变它(否则我猜你会记得你是怎么做的)而且10分钟看起来像一个奇怪的默认值。我敢说你在共享服务器上托管你的应用程序,会话数据存储在默认的共享位置,而另一个客户的其他应用程序设置了较低的会话生命周期。出现此问题是因为会话数据不是站点感知的:当PHP垃圾收集器删除在10分钟内未访问的会话文件时,它会删除目录中的所有文件;它无法知道它们属于哪个网站。

我无法告诉您如何在WebsiteBaker中修复它,但在常规PHP中,您需要在帐户中设置自定义会话目录。然后(并且只有这样)您将完全控制自己的会话数据:

session_save_path('/home/users/foo/sessions');
ini_set('session.gc_maxlifetime', 3*60*60); // 3 hours (or whatever you need)
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
session_start();