Вы можете создать переменную сеанса с отметкой времени в качестве значения.
Каждый раз, когда пользователь запрашивает страницу, вы можете обновлять отметку времени.
За исключением случаев, когда это запрос Ajax.
Каждый раз, когда происходит запрос Ajax, вы можете проверить, прошло ли 30 минут и, если это так, уничтожить сеанс.
Это единственный способ, о котором я могу думать.