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