Upload , сессии и сборщик мусора

Роберт

Аналитик
Upload , сессии и сборщик мусора

Практически на всех почтовых серверах делается так: вначале ты пишешь само письмо , потом по одному файлу закачиваешь туда аттачменты (в любой момент имея возможность стереть ненужный файл) , и потом посылаешь.
Кто-нибудь может на пальцах обьяснить или показать в сторону описания как эти файлы хранятся на сервере? При обычной закачке файл пропадает из временной директории как только отрабатывает скрипт принявший его , а тут он наверняка связан с сессиями. Но как тогда реализуется сборщик мусора? Ведь пользователь не всегда отправляет закаченные файлы. Иногда он просто закрывает браузер и тогда файлы повисают мёртвым грузом на сервере. Не кроном же их удалять!
Можно конечно при каждом входе нового пользователя устраивать проверку истекших сессий , но видя что во всех почтовых программах и менеджарах закачки работает один и тот же принцип у меня появляются подозрения - может это уже как-то реализуется с помощью готовых функций?
 

Popoff

popoff.donetsk.ua
Если говорить о сессиях, то в контексте твоего вопроса:
1) Читаем
http://ua2.php.net/manual/ru/ref.session.php

2) Размышляем о том, зачем нужно session.gc_*

-~{}~ 30.01.05 15:33:

Отличие новичков от продвинутых в том, что продвинутые читают мануал, а новички - нет. Для того, что бы ответить на этот вопрос, нужно прочитать мануал. Поэтому это вопрос для продвинутых. :)
 

Роберт

Аналитик
Про то что у сессии есть время жизни и что они уничтожаются - это понятно. Но вопрос был несколько иным - есть ли стандартные механизмы как связать файлы закаченные пользователем с этими самыми сессиями и чтобы по истечению времени действия сессии все временные файлы которые он успел накачать на сервер , удалялись бы вместе с сессией?
 

.::PhoenikS::.

Новичок
Originally posted by Роберт
Про то что у сессии есть время жизни и что они уничтожаются - это понятно. Но вопрос был несколько иным - есть ли стандартные механизмы как связать файлы закаченные пользователем с этими самыми сессиями и чтобы по истечению времени действия сессии все временные файлы которые он успел накачать на сервер , удалялись бы вместе с сессией?
Popoff прав, читай http://www.php.net/manual/ru/function.session-set-save-handler.php
Если идеи в голову не пришли, подсказка:
- сохраняй пути файлов с в сессии (наверняка так и делаешь)
- напиши свой GC сессий, который будет сначала из самой очищаемой сессии получать эти файлы, стирать их, а уже потом сносить все остальные данные сессии


Про стандартность: стандартнее некуда, мне кажется )
 

Роберт

Аналитик
Popoff
Я боялся так делать! Допустим пользователь закачивает файлы размером 10-20Мб. При каждом обновлении страницы сервер вынужден перечитывать его сессионный файл - тоесть загружать в память все 20Мб!!!

-~{}~ 30.01.05 17:19:

.::phoenikS::.
Я правильно понимаю - мне придётся создавать полностью собственную систему для работы с сесиями (создав то что приведено там в примере) или я могу в функции session_set_save_handler определить только GC? Меня ведь всё в стандартных сессиях устраивает! Только надо чтобы он файлы перед уничтожением сессии уничтожад.
в Delphi я могу перехватить любое событие (например открытие окна или нажатие на кнопку) в своём приложении , выполнить какие-то свои действия и после этого сказать что пусть дальше выполняется то что должно было бы выполняться! Тут очевидно не влезть в обработчик сессий таким образом чтобы всё работало как прежде лишь перед уничтожением сессии вызывался бы мой модуль? :(
 
Сверху