Вам нужно событие удаления пользователя по таймауту. Чтобы по нему проверять комнаты пользователя на предмет того, не удалить ли и их заодно.
Т.е. чтобы наступление определённого времени вызывало выполнение процедуры.
Такого механизма в PHP нет. Поэтому остаётся раз в N минут смотреть на часы и решать, что же сделать.
upd. Можно вместо БД использовать
Redis – там есть механизм
Expire (удаления устаревших ключей). При каждом событии пользователя отодвигается время отмирания его сессии. С комнатами пользователя, наверное, надо поступать так же: при каждом событии пользователя заодно обновлять и все его комнаты.
Придётся проверять каждые, скажем, 5 минут все сессии: какие из сессий пора удалить + проверить их комнаты.