У меня есть приложение 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
Пожалуйста, помогите :)