проблема доступа к фаилу [PhP]}

Ivan826

Ситуация такая:
Есть фаил. Юзер его качает. Может возникнуть момент что система снесёт фаил прежде чем юзер его докачает. Как сделать так что бы фаил сносился, только в том случае, если юзел его уже получил?

artimon

Что значит качает?
Что значит система снесёт?
Что значит докачает?

Ivan826

есть фаил.
Перенапрявляется header не него что бы юзеро мог его скачать
При определёенных внешних условиях до того как юзер его докачает может податся команда на его удаление. В итоге юзер увидит страницу 404, так как этого фаила (который он качает) уже нету.
Надо что бы при подаче команды на удаление если фаил качается, то он бы не удалялся

evgen5555

При повторении этих операций все файлы вскоре исчезнут.
Как ИМЕННО создается файл?

Ivan826

Да да. Они исчезают. Появляются они там копированием из другого места перед тем как отдать header на этот фаил

artimon

Учи мат.часть.
Пока файл кем-то открыт (в данном случае Apache'м) ему будет пофигу на то, что его удалили.

Ivan826

Да? Ссылку дать?

Julie16

Человек видимо не знает про unlink И как происходит работа с файлами вообще...

Ivan826

Ну есть такое. Поделитесь плиз

Julie16

При каждом открытии файла(или при создании ссылки на него) система делает увеличение числа ссылок на этот файл. Вызов unlink(delete) уменьшает этот счетчик. Но файл будет удален только тогда когда этот счетчик станет равным 0. Поэтому пока файл открыт хотя бы одной программой, он не удалится. Как только файл закроется, он удалится.

artimon

Короче, код download.php в студию.

stm7884696

а если хостинг виндовый?

Julie16

И что? В виндах уже не так? В NT, во всяком случае.

stm7884696

ну хз... говорит же, что удалаятся файл...
а вообще, корян, ты тупишь....
пропиши через мод-реврайт, что бы при обращении к чему либо в данной папке, кроме ее индекса вызывался ее индексовый файл, на котором бы была ссылка на запрашиваемый файл...
А что бы при нажатии на эту ссылку не получился бесконечный цикл вызова индекса - обработай еще и реферер... если с этой страницы - вернуть файл, а если нет - то индексовую страницу...
И думай головой, прежде чем копировать файл на время его скачки в темповую директорию...
Оставить комментарий
Имя или ник:
Комментарий: