Спустя 20 минут, 27 секунд (23.03.2010 - 21:18) krasilich написал(а):
Не обязательно на крон. Можно что бы сам скрипт удалял старые записи.
Алгоритм примерно следующий.
- Генерируем ссылку
- Записываем в базу ссылку (лучше не всю ссылку а только уникальный компонент), и время до которог она живет.
- Проверяем, есть ли в базе ссылки, которые устарели, если есть удаляем.
Алгоритм примерно следующий.
- Генерируем ссылку
- Записываем в базу ссылку (лучше не всю ссылку а только уникальный компонент), и время до которог она живет.
- Проверяем, есть ли в базе ссылки, которые устарели, если есть удаляем.
Спустя 40 минут, 56 секунд (23.03.2010 - 21:59) Extremal написал(а):
я так же думал,но что бы он удалял ссылки,нужно самому переодически открывать этот скрипт,что не очень подходит,а в сайт его вставлять это лишняя нагрузка + пока сайт будет не особо посещаймый ссылки все равно дольше жить будут
Спустя 18 минут, 51 секунда (23.03.2010 - 22:18) krasilich написал(а):
Ну тогда такой вариант, при каждом переходе по ссылке, проверяется, не истекло ли ее время. Если нет - пускаем пользователя дальше иначе отправляем на страницу - время жизни ссылки истекло, получите новую ссылку
Спустя 3 минуты, 5 секунд (23.03.2010 - 22:21) Extremal написал(а):
Примерно этот вариант и нужен,только нужно как то сделать не через прямую ссылку к файлу,вот это мне и непонятно.
Спустя 40 минут, 38 секунд (23.03.2010 - 23:01) krasilich написал(а):
тю...
Так бы и сразу)
Предположим что все файлы у тебя храняться в одной папке (если нет, то нужно сделать).
При переходе по этой ссылке проверяем. Если ссылка не устарела, получаем имя файла из базы и редиректим на этот файл
Так бы и сразу)
Предположим что все файлы у тебя храняться в одной папке (если нет, то нужно сделать).
$name = 'file.jpg';
$ln = md5($name);
echo 'http://site.ru/?file='.$ln; //так мы получили ссылку.
//вставляем в базу $name, $ln, $time + 86400
При переходе по этой ссылке проверяем. Если ссылка не устарела, получаем имя файла из базы и редиректим на этот файл
Спустя 36 минут, 49 секунд (23.03.2010 - 23:38) Extremal написал(а):
Подчти,но не совсем так. При скачивании файла покажет полный путь к нему в обход всех пхп скриптов,вот и интересно как это можно скрыть? Или остается только вариант переодически удалять файлы по истечению времени?
Спустя 1 час, 14 минут, 17 секунд (24.03.2010 - 00:52) krasilich написал(а):
header("Content-type: Octet-stream");
echo file_get_contents($path_to_file);
Идея понятна?
Спустя 4 часа, 52 минуты, 11 секунд (24.03.2010 - 05:45) Extremal написал(а):
Вот эта строка мне и нужна была
Спасибо!))
header("Content-type: Octet-stream");
Спасибо!))
Спустя 6 часов, 4 минуты, 20 секунд (24.03.2010 - 11:49) vagrand написал(а):
Файлы которые собрались отдавать какого примерно размера?
Спустя 7 минут, 28 секунд (24.03.2010 - 11:56) krasilich написал(а):
Вообще набор хедеров нужно расширить, добавить туда размер файла, его тип, да и под разные браузеры подстроить.
К тому же справедливый вопрос по поводу размера файлов.
Если там больше 1мб то лучше сделать так
Хм, вот только что-то не то с этим кодом. Кто подправит?))
К тому же справедливый вопрос по поводу размера файлов.
Если там больше 1мб то лучше сделать так
$fh = fopen($file_path, 'r');
while($fd != EOF)
{
echo $fd = fread($fh, 512); //512 - размер пакета, на которые мы разбиваем файл, что бы не забить оперативку
flush();
sleep(0); //этим можно регулировать скорость скачки и не загружать канал.
}
fclose($fh);
Хм, вот только что-то не то с этим кодом. Кто подправит?))
Спустя 5 часов, 12 минут, 52 секунды (24.03.2010 - 17:09) Extremal написал(а):
Файлы будут размером до 20мб,сайт будет стоять на VPS та что думаю проблем не будет.
Цитата |
Вообще набор хедеров нужно расширить |
Расширил все кроме браузеров
Спустя 13 минут, 46 секунд (24.03.2010 - 17:23) krasilich написал(а):
Каждый файл будет занимать опертиву.
Тоесть, 100 одновременных скачиваний по 20мб это 2гб ram.
Лучше отдавай по кускам.
Тоесть, 100 одновременных скачиваний по 20мб это 2гб ram.
Лучше отдавай по кускам.
Спустя 1 час, 7 минут, 41 секунда (24.03.2010 - 18:31) Extremal написал(а):
Цитата |
Хм, вот только что-то не то с этим кодом. Кто подправит?)) |
<?php
$file = 'file.rar';
$fh = fopen($file, 'r');
header("Content-type: Octet-stream");
header("Content-Disposition: attachment; filename=$file");
while(!feof($fh))
{
echo fread($fh, 512);
flush();
sleep(0);
}
fclose($fh);
?>
Работает и вроде правильно=)
Спустя 7 минут, 17 секунд (24.03.2010 - 18:38) krasilich написал(а):
Значит хорошо=)
Спустя 12 минут, 4 секунды (24.03.2010 - 18:50) Extremal написал(а):
Тока не понятно почастично файл качает или нет=)
Кстати что там в хеадарах нужно с браузерами сделать?
Кстати что там в хеадарах нужно с браузерами сделать?
Спустя 31 минута, 3 секунды (24.03.2010 - 19:21) krasilich написал(а):
Качает то, что мы отдаем=)
С браузерами...
С оперой и ие там непонятки. Если честно не помню уже какие, давно таким занимался%)
Кажись опера сильно умничала и пыталась сама определить mime если он явно не указан, и определяла не всегда корректно.
Для ие вроде как то по особенному нужно указывать, что это аттач, иначе пытаеться его отобразить...
С браузерами...
С оперой и ие там непонятки. Если честно не помню уже какие, давно таким занимался%)
Кажись опера сильно умничала и пыталась сама определить mime если он явно не указан, и определяла не всегда корректно.
Для ие вроде как то по особенному нужно указывать, что это аттач, иначе пытаеться его отобразить...
_____________