Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Выдать на скачку файл, подождать и удалить эго


Автор: djman2006 10.8.2008, 23:58
Скрипт по запросу формирует zip файл, и выдает эго на скачку таким образом:
Код

Header('Location: http://'.$HTTP_SERVER_VARS['SERVER_NAME'].'/'.$filename);

Как мне отследить, что файл скачался чтоб удалить эго?

Автор: Anarki 11.8.2008, 09:05
Однозначно определить, что файл скачался у клиента очень сложно, почти невозможно, ибо куча факторов. Как вариант можно выставить
Код

<?php
ingore_user_abort(true);

Затем через readfile($file); отдавать скриптом файл клиенту и в конце скрипта уже прописать удаление файла. В этом случае файл скачается , если клиент не отменял скачку в большинстве случаев. 

Я не представляю как проще этого сделать.

Автор: Yura_Matsuk 11.8.2008, 09:26
Если я правильно понял ситуацию, я бы предложил не копировать/удалять файлы на сервере, т.к. это большая нагрузка.
Я предлагаю создавать некоторый ключ в БД. Когда юзер пытается скачать, мы проверяем, есть ли такой ключ, который он указывает. И если есть тогда позволяем скачать. А ключ удалять/деактивировать из БД по прошествии некоторого времени

Автор: Anarki 11.8.2008, 09:37
Yura_Matsuk, 
Ага, я тоже об этом думал, только тут все зависит от автора топика. Если ему нужно быстро удалять файл сразу после скачки и быстро, то этот способ не подойдет, т.к. у клиентов может быть разная скорость интернета. Если ему достаточно просто удалять файлы, то можно сделать в зависимости от размера файла время хранения.

Автор: djman2006 11.8.2008, 15:05
Сделал через readfile(). Всем спасибо за ответы!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)