Постараюсь описать задачу. Имеется 1 скрипт, который генерирует файлы в папку tmp/. После этого сразу же второй скрипт начинает отдавать файл клиенту (стартует загрузку на клиент) с поддержкой докачки (http_range), поэтому неизвестно, когда файл скачается. После чего файл больше не нужен. Как организовать удаление файлов и по какому критерию? Пока только придумал удаление всех файлов во временной директории, время жизни которых дольше N минут. P.S.: Я уже пытался выяснить, как определить, что файл скачался в этом вопросе.
Ответ Возможно, вариант отмороженный, но если через 10 мин можно открыть файл с помощью fopen($file, 'a') - значит, его не качают в данный момент. Как вариант - сделать хэндлер для загрузки, в котором разбирать Accept-Range, и делать примерно так fseek($f, $acceptRangeStart) $flock = @fopen('__' . basename($fileToDownload) . $acceptRangeStart, 'w+') @fclose($flock) // создаем лок-файл echo fread($f, $acceptRangeBytes) @unlink('__' . basename($fileToDownload) . $acceptRangeStart) $finished = true foreach (scandir('tmp') as $fn) { if (strpos($fn, '__' . basename($fileToDownload)) !== false) { $finished = false // если идет докачка, сбрасываем break } } if ($finished) { // если лок-файлов не найдено unlink($fileToDownload) // удаляем основной файл } А чем вам, кстати, не нравится вариант, который используют почти все файлообменники? (Ссылка для скачивания будет доступна в течение суток и только для этого компьютера)