计算并限制我的应用上的用户数量

时间:2010-10-31 20:46:40

标签: php session usage-statistics

我需要实现一个系统来限制可以同时使用我的应用程序的用户数量。我认为最好的方法是计算当前活动的会话数,然后根据该数限制。

如何计算当前活动的会话数。我正在使用memcached存储我的会话,如果这会产生影响

3 个答案:

答案 0 :(得分:1)

我不知道在PHP中给定时间计算每个活动会话的方法。我总是使用一个数据库,我将存储IP地址和当前日期(NOW()SQL函数)。然后,我可以这样做一个查询(MySQL语法):

SELECT COUNT(*) as active_users
FROM logged_users
WHERE last_action > NOW() - INTERVAL 5 MINUTE;

然后,您可以选择显示该页面或禁止用户查看该网站。

答案 1 :(得分:1)

我认为最简单的方法是拦截会话的opendestroygc回调(使用session_set_save_handler())并在memcached中递增/递减会话计数值。类似的东西:

class Memcache_Save_Handler {

   private $memcached;

   public function open($save_path, $name) {
      $session_count = (int)$this->memcached->get('session_count');
      $this->memcached->set('session_count', ++$session_count);
      // rest of handling...
   }

   public function destroy($id) {
      $session_count = (int)$this->memcached->get('session_count');
      $this->memcached->set('session_count', --$session_count);      
      // rest of handling...
   }

}

答案 2 :(得分:1)

可能是您的网络服务器可以限制最大并发客户端数量? (但这会影响获取图像/其他静态内容)