结束php会话以进行调试

时间:2010-06-10 19:09:30

标签: php session

这可能很容易做到,但我无法弄明白。

基本上,我有一个用python和php编写的松散的Web应用程序。 python代码使用PHP会话(在用户登录时从PHP应用程序生成)来检查用户是否已登录/有权访问给定的python资源。

我的问题是:强制所有活动会话超时的最简单方法是什么。我想这样做是为了调试,测试python代码。我尝试更改session.max_lifetime PHP变量,但仍不保证会话已结束并被删除。

我尝试删除该文件,但这似乎会导致问题(当我刷新php页面时,错误会显示在我的apache日志中,并且不会快速重新加载)

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我知道没有一种干净地结束所有客户的所有会话的核心方式。

要结束所有会话,我会在应用内的指定位置创建一个具有已定义名称(例如end.txt)的文件。

您的引导程序文件(或初始化会话的任何位置)将在启动会话后立即检查该文件是否存在;如果是,请执行session_destroy()并取消设置所有Cookie。

使用此方法,您必须手动删除end.txt文件。

答案 1 :(得分:1)

刚刚在另一个问题上找到了这个: cleanup php session files

您可以尝试使用ini_set()函数将gc_maxlifetime设置为较低的值,例如0或1(我没有尝试过,但这似乎是合理的)。

http://ar.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

要尝试的另一件事是删除session.save_path文件夹中的所有文件。当然,这需要适当的文件权限,但它可能是更好的选择。

答案 2 :(得分:0)

删除服务器上的会话文件不会删除客户端的sesison cookie。您可以删除会“杀死”会话的会话cookie。或者您可以简单地使用session_unset()来销毁会话服务器端。

您可能还需要使用session_destroy()并取消设置会话cookie(为此,请查看session_unset注释以了解具体方法)。