в конце сеанса - PullRequest
       3

в конце сеанса

4 голосов
/ 02 марта 2012

У меня есть проект Symfony2, в котором в начале каждого сеанса я создаю на сервере папку, в которой пользователь может манипулировать и размещать свои файлы.

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

Как мне этого добиться?

PS: я где-то читал, что в java есть sessionHandler, где вы можете кодировать свою функцию.

Есть ли что-нибудь похожее в php (особенно Symfony2)?

1 Ответ

4 голосов
/ 02 марта 2012

Прежде всего, вы не можете узнать, если браузер закрыт HTML и PHP. Вам понадобится Ajax и постоянный опрос или что-то еще, чтобы знать, что браузер все еще там. Возможно, но немного сложнее, в основном потому, что вы можете столкнуться с проблемами, если браузер все еще существует (сеанс действителен), но не имеет подключения к Интернету в течение нескольких минут (ноутбук, дрянной wlan, что угодно).

У вас не может быть sessionHandler, который делает это за вас в PHP, потому что PHP запускается при получении скрипта с вашего сервера. После выполнения последней строки она останавливается. Если никто не получит сценарий снова, как он должен что-то сделать? Нет волшебства, которое перезапускает скрипт, чтобы проверить, все ли еще есть сеанс.

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

Логическая часть, которая содержит решение о том, какой сеанс является недействительным и что делать с этими сеансами) является вашей частью. Но это не должно быть очень сложно, так как вы получили время сеанса и значение в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...