Подсчитывайте и ограничивайте количество пользователей в моем приложении.

Мне нужно внедрить систему, чтобы ограничить количество пользователей, которые могут одновременно использовать мое приложение. Я думаю, что лучший способ – подсчитать количество активных сеансов, а затем ограничить их.

Как я могу подсчитать количество активных сеансов. Я использую memcached для хранения моих сеансов, если это имеет значение

Solutions Collecting From Web of "Подсчитывайте и ограничивайте количество пользователей в моем приложении."

Я думаю, что самый простой способ – перехватить вызовы open , destroy и gc сессии (используя 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... } } 

Я не знаю, как рассчитывать каждый активный сеанс в данный момент в PHP. Я всегда использовал базу данных для этого, где я бы сохранил IP-адрес и текущую функцию (NOW () SQL). Затем, я могу сделать такой запрос (синтаксис MySQL):

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

Затем вы можете отобразить страницу или запретить пользователю просматривать веб-сайт.

Может быть, веб-сервер может ограничить максимальное количество одновременных клиентов? (Но это может повлиять на получение изображений / другого статического содержимого)