Лимит пользователей для моего PHP-приложения - с примером кода

У меня есть приложение PHP, которое я ищу, чтобы ограничить количество пользователей, которые могут быть активными в любой момент времени. Я хотел бы сделать его как можно более легким, поскольку причина его реализации заключается в том, что наш текущий сервер не может справиться с нагрузкой - таким образом, это временное решение, пока мы не сможем выполнить обновление. Мы храним наши сеансы в кэше памяти, поэтому я написал следующий сценарий для подсчета активных сеансов и сохранения их в плоском файле - этот сценарий запускается каждые 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);
?>

Теперь в верхней части каждой страницы легко найти сколько пользователей в настоящее время активны ... моя проблема сейчас в том, есть ли больше лимита, чтобы больше людей не создавали сеансы. Причина, по которой это проблема, заключается в том, что у меня нет способа узнать, есть ли у пользователя, загружающего страницу, уже активный сеанс, не выполнив что-то вроде:

    <?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

Пожалуйста, помогите :)

5
задан 2 November 2010 в 15:10
поделиться