当前位置: 首页 > 面试题库 >

如何判断会话是否处于活动状态?

解晟睿
2023-03-14
问题内容

对于每个请求,您可以通过几种不同的方式来判断会话是否已经开始,例如:

$isSessionActive = (session_id() != "");

要么:

$isSessionActive = defined('SID');

但是,如果您启动会话然后将其关闭,它们都将失败。session_id()将返回前一个会话的ID,同时SID将对其进行定义。同样,如果您已经有一个活动会话,则此时调用session_start()将生成一个E_NOTICE。有没有一种明智的方法来检查会话当前是否处于活动状态,而不必诉诸输出缓冲,关闭运算符@session_start())或其他类似hacky的方法?

编辑8/29/2011:向PHP 5.4添加了新功能来解决此问题:“通过新功能session_status公开会话状态”

// as of 8/29/2011
$isSessionActive = (session_status() == PHP_SESSION_ACTIVE);

编辑12/5/11:PHP手册上的session_status()。


问题答案:

查看对原始问题的修改;基本上,PHP
5.4及更高版本现在具有session_status()解决此问题的功能!

“通过新功能session_status公开会话状态”(SVN修订版315745)



 类似资料:
  • 令我惊讶的是,已经完成执行但尚未加入的C11std::thread对象仍然被视为活动执行线程。下面的代码示例说明了这一点(基于Xubuntu 13.03和G4.7.3构建)。有人知道C 11标准是否提供了一种检测std::thread对象是否仍在积极运行代码的方法吗?

  • 问题内容: 我有一个每秒调用一次的函数,仅当当前页面位于前台时才运行,即用户没有最小化浏览器或切换到另一个选项卡。如果用户不看它,它是没有用的,并且可能占用大量CPU,因此我不想只在后台浪费时间。 有人知道如何用JavaScript讲这个吗? 注意:我使用jQuery,因此,如果您的答案使用了jQuery,那就好了:)。 问题答案: 您将使用窗口的和事件: 要回答“ Double Fire”的评论

  • 我计划为 EJB 编写一个拦截器,它基本上可以执行以下操作: 问题是,如果em.flush()应用于用@TransactionAttribute(NOT _ SUPPORTED)或@TransactionAttribute(SUPPORTS)注释的方法(即只读方法),它会引发异常,而它在使用默认@ transaction attribute(必需)的方法(即更改数据库的方法)时工作良好。 有没有办

  • 问题内容: 因此,我正在使用下载管理器在我的应用程序中下载多个文件。开始某些活动之前,我需要这些文件才能完成下载。如何检查是否有活动的下载,所以我可以告诉用户等待下载完成。然后,当它们完成时,我需要使按钮可见。我已经用谷歌搜索过,甚至自己(盲目地)尝试了一些代码,但没有任何效果。如果有人可以向正确的方向推动我,我将不胜感激。 问题答案: 使用打听下载。调用时,返回值是下载的ID。您还可以按状态查询

  • 本文向大家介绍C#中如何检查线程是否处于活动状态,包括了C#中如何检查线程是否处于活动状态的使用技巧和注意事项,需要的朋友参考一下 要检查线程是否存在,代码如下: 示例 输出结果 这将产生以下输出- 示例 现在让我们来看另一个示例- 输出结果 这将产生以下输出-

  • 我需要检查FTP服务器是否处于活动状态,此服务器是否: 我尝试了这段代码: 问题是返回以下异常: 如何才能做到这一点呢? 谢谢你