我的PHP应用程序的用户限制-带有示例代码

我的PHP应用程序的用户限制-带有示例代码,php,session,memcached,Php,Session,Memcached,我有一个PHP应用程序,我希望限制在任何给定时间可以活动的用户数量。我想让它尽可能轻,因为实施它的原因是因为我们当前的服务器无法处理负载-因此这是一个临时解决方案,直到我们可以升级。我们将会话存储在memcache中,因此我编写了以下脚本来计算活动会话并将其存储在一个平面文件中-此脚本每5分钟运行一次 <?php $memcache = new Memcache; $memcache->connect('127.0.0.1', 11211); $activeSessio

我有一个PHP应用程序,我希望限制在任何给定时间可以活动的用户数量。我想让它尽可能轻,因为实施它的原因是因为我们当前的服务器无法处理负载-因此这是一个临时解决方案,直到我们可以升级。我们将会话存储在memcache中,因此我编写了以下脚本来计算活动会话并将其存储在一个平面文件中-此脚本每5分钟运行一次

<?php
  $memcache = new Memcache; 
  $memcache->connect('127.0.0.1', 11211);
  $activeSessions = $memcache->getStats(); 


$file_content = <<<TEXT
<?php

\$activeSessions = {$activeSessions['curr_items']};

?>
TEXT;

file_put_contents("activesessions.php", $file_content);
?>

文本;
文件内容(“activesessions.php”,$file\u content);
?>
现在在每个页面的顶部可以很容易地找到当前有多少用户处于活动状态。。。我现在的问题是,阻止更多人创建会话是否超出了限制。这是一个问题的原因是,如果不执行以下操作,我无法判断加载页面的用户是否已经有活动会话:

    <?php

include ('activesessions.php');
//uid is the users facebook id
session_id(md5($uid.$secret));
session_start();
if ($activeSessions > $limit && empty($_SESSION))
{
   session_destroy();
   include('limit_message.php');
   exit;
}
?>

这应该可以做到,但在这个过程中,它将创建一个会话来检查会话是否存在:S。。。这样就扭曲了我的活动会话计数

所以本质上我有一个解决方案。。。但我的问题是,有人有更好的吗?然而,如果你认为我的解决方案是最好的,请评论或投票让我知道:D


请帮助:)

如果您在没有任何参数的情况下调用
session\u id()
,它将返回用户的当前session id,如果没有当前session id,则返回空白字符串,如PHP中所述。根据您所拥有的,您将希望执行以下操作:

include ('activesessions.php');
//uid is the users facebook id

if ($activeSessions > $limit && session_id() == '')
{
   include('limit_message.php');
   exit;
}

session_id(md5($uid.$secret));
session_start();

这只是一个快捷方式,用于检查cookie是否设置了会话名称,以及该值是否为有效的会话id字符串。

如此多的视图而没有一点反馈:可能的重复。您我的朋友是一个真正的传奇:DNo问题。需要记住的一点是,跟踪活动用户实际上与活动会话不是一回事,但听起来你已经明白了这一点。