Прежде всего, вы не можете узнать, если браузер закрыт HTML и PHP. Вам понадобится Ajax и постоянный опрос или что-то еще, чтобы знать, что браузер все еще там. Возможно, но немного сложнее, в основном потому, что вы можете столкнуться с проблемами, если браузер все еще существует (сеанс действителен), но не имеет подключения к Интернету в течение нескольких минут (ноутбук, дрянной wlan, что угодно).
У вас не может быть sessionHandler, который делает это за вас в PHP, потому что PHP запускается при получении скрипта с вашего сервера. После выполнения последней строки она останавливается. Если никто не получит сценарий снова, как он должен что-то сделать? Нет волшебства, которое перезапускает скрипт, чтобы проверить, все ли еще есть сеанс.
Итак, что делать? Прежде всего вы хотите сделать сеанс видимым, используя хранилище сеансов базы данных или что-то в этом роде. Затем вам нужен cronjob, который запускает скрипт, просматривает все сеансы и решает, какой из них сейчас недопустим, а затем что-то с ним делает (например, удаляет папку). Symfony может помочь, поскольку он позволяет вам сконфигурировать управление сеансами так, чтобы он сохранял сеансы в базе данных (см. здесь ), а также создать задачу, которую можно выполнить с помощью crontab (см. здесь *). 1008 *).
Логическая часть, которая содержит решение о том, какой сеанс является недействительным и что делать с этими сеансами) является вашей частью. Но это не должно быть очень сложно, так как вы получили время сеанса и значение в базе данных.