Проверка существования сессии в PHP

Sanu0074
На сайте с 31.08.2012
Offline
110
2529

Есть некая задача. Есть на сервере папка с временными файлами temp_dir, в ней помещаются файлы пользователя на некоторое время, например пользователь загрузил что-то в форму, прикрепленные файлы до подтверждения сохранения скапливаются в папке temp_dir/current_session_id (под-папка с именем равным текущему идентификатору сессии). И вот момент, когда пользователь прикрепил что-то, эти файлы попали в temp_dir/current_session_id и тут погас свет и вырубился комп, а как включился - то пользователь забыл про сайт и больше туда не заходит, а мусор остался в temp_dir. Чтобы удалить этот мусор нужно время от времени проверять существование конкретной сессии с указанным id, если таковой не существует - то удалять папку в temp_dir с нужным именем. Подобным образом работает механизм сборщика мусора (устаревших сессий) в PHP. Собственно вопрос, как проверить существование конкретной сессии с указанным id?

siv1987
На сайте с 02.04.2009
Offline
427
#1

Сессия создается на определенное время, соответственно и проверяется также - если старше удаляется.

Sanu0074
На сайте с 31.08.2012
Offline
110
#2

siv1987, я знаю. так как мне проверить, существует ли еще файл с конкретным sessionId на сервере, или нет ?

siv1987
На сайте с 02.04.2009
Offline
427
#3

Выключился комп, сессия осталась не удалилось, она устарела - удаляем. Или я что-то не так понял?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#4
в ней помещаются файлы пользователя на некоторое время,

Если на некоторое время, то чистим раз в неделю через крон записи, которым больше 7-ми дней.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Sanu0074
На сайте с 31.08.2012
Offline
110
#5

siv1987,

Выключился комп - сессия уже обрубилась, но файл сессии (хранится например: php/tmp/sess_3pqoe4fobjgj3b3omc4153dd10) - еще жив, этот файл удалит через время сборщик мусора в PHP, все что после "sess_" в имени файла - это id сессии запущенной для конкретного браузера.

Что происходит с временными файлами пользователя, в нашей temp_dir, скрипт сканирует папки равные id сессий, сверяет их с существованием файлов в php/tmp/, и тогда смотрит удалять под-папку из tem_dir или нет.

---------- Добавлено 07.05.2014 в 23:26 ----------

LEOnidUKG:
Если на некоторое время, то чистим раз в неделю через крон записи, которым больше 7-ми дней.

хочу обойтись без cron и БД (типа хранить и сравнивать время последней активности)
siv1987
На сайте с 02.04.2009
Offline
427
#6
Sanu0074:
этот файл удалит через время сборщик мусора в PHP

Почему? Потому что сессия устарела. Удаляйте и вы временные файлы. Они не могут быть временными больше определенного времени. Если нет - то собственно вы себе костыль в ответе написали.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#7
хочу обойтись без cron

Ну это программирование. Это же не по воле божей это делается.

Посадите тогда на пользователей эту функцию, каждый зашедший запускает механизм. Там уже как хотите сделайте. Пусть они проверяют, но нафига эти костыли не понятно

Sanu0074
На сайте с 31.08.2012
Offline
110
#8

Может просто можно проверять существование файла session_save_path()."sess_".$folderName. В данном случае folderName - имя подпапки которое соответствует id когдато запущенной сессии.. надо поробовать

siv1987
На сайте с 02.04.2009
Offline
427
#9
Sanu0074:
имя подпапки которое соответствует id когдато запущенной сессии.

А откуда у вас id когда-то запущенной мертвой сессии? Скан папки? В чем смысл? Тот же аналог крона, да только с костылями и какой-то проверки где у php и доступа скорее всего и не будет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий