3

可能重复:
查找打开的会话数
访问 PHP 中的活动会话

当用户到达网页时,会为用户创建一个会话变量,我想知道是否可以计算活动会话的数量?

4

3 回答 3

3

当用户到达网页时,会为用户创建一个会话变量,我想知道是否可以计算活动会话的数量?

您存储的所有东西都可以计数。但是,默认情况下,会话中的值是每个用户的,PHP 不会一起跟踪所有会话或其他东西。

因此,由您来创建该上下文。例如,您可以编写自己的会话处理程序。

这在 PHP 5.4 中变得容易多了,因为您现在可以扩展标准会话处理程序并添加您需要的功能。请参阅手册页:SessionHandler 类

那么这怎么可能呢?每次会话存在时,您都会向共享的数据存储写入活动会话。如果会话被破坏,例如通过垃圾收集或因为您比较时间并且自上次活动以来已经过去了足够的时间,那么您可以通过共享数据存储来计算。

于 2012-06-29T20:09:37.713 回答
2

会话存储在 session.save_path(在 ini 文件中)文件夹中的临时文件中。每个文件都以“sess_”开头。我认为您可以计算这些文件的数量以了解有多少会话处于活动状态。

于 2012-06-29T20:01:07.403 回答
1

您可能可以通过以下方式获得会话数:

$sessionCount = count(glob(session_save_path()."/*"));

但是,您需要确保正确配置了会话垃圾收集,这样您就不会在其中获得死会话文件。

于 2012-06-29T20:00:01.213 回答