Эта проблема сложнее, чем кажется на первый взгляд.
Необходимо учитывать поведение сеанса на трех разных уровнях:
PHP
Для PHP вам нужно установить тайм-аут сеанса на то, что вы ограничиваете.Вот пример кода из php.net :
<?php
session_cache_limiter('private');
/* set the cache expire to 30 minutes */
session_cache_expire(30);
session_start();
?>
База данных
Похоже, вам нужно отслеживать, сколько сеансов активнотак что вы можете применить свою лицензию.Поскольку вы работаете в PHP, вам нужно сделать это на уровне базы данных.Каждый запрос может написать «время последнего запроса» для пользователя (UPDATE users SET last_access=NOW() WHERE user_id=?
), и тогда вы можете предположить, что активными являются сеансы в течение последних 30 минут.
Вместо «последнего времени доступа» вы можете попытаться отслеживать активные сеансы снова в базе данных.Я не совсем уверен, как это лучше всего сделать в PHP.Я думаю, что вы можете внести исправления в код удаления сессии PHP.Я полагаю, что возможно, чтобы он вызывал функцию по истечении сеанса, но я этого не сделал.
Браузер
Опрос Javascript можно использовать, но этоне обязательно, если у вас есть тайм-аут на стороне сервера.Рассмотрим случаи, когда пользователь отключает Javascript или у вас возникает какая-либо ошибка Javascript, которая приводит к прекращению работы сценария.
У нас очень интенсивный Ajax-сайт, поэтому Javascript важен.Тайм-аут может быть обнаружен, когда пользователь делает что-то столь же безобидное, как открытие панели на странице. Я описал свой недавний опыт здесь.