|
|
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
На различных сайтах видел такую фишку: создание временного уникального урл к файлу на загрузку (каждому пользователю/файлу свой), например: http://_домен_/download/46a2b7b6ceda6e7f6728b47d1b4d179a/4726a832/file.rar (подобные вещи видел и с ftp) Меня интересует как чем/как это реализовывают - созданием симликов или модуль какой-то хитрый для lighttpd\cheerokie\nginx\apache o_O? вообщем, кто-нибудь подобные вещи реализовывал? буду признателен за подсказку... ЗЫ: раздача через php-скрипт не пойдёт, ибо слишком ресурсоёмко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 06:51:14 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
с помощью mod_rewrite apache можно преобразовать урл. Например, сделать преобразование такое, что при обращении к урлу http://_domain_/parm1/parm2/file.rar на сервере запрашивался урл http://_domain_/cgi-bin/getfile?key=parm1&file_id=parm2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 12:01:34 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
я забыл уточнить, что юзер _не должен_ получить реальный путь к файлу. с помощью mod_rewrite я не понимаю, как это реализовать, вот мой ход мысли юзер запрашивает: http://_домен_/download/46a2b7b6ceda6e7f6728b47d1b4d179a/file.rar, преобразовываем, скажем в http://_домен_/download.php?uid=46a2b7b6ceda6e7f6728b47d1b4d179a. в download.php проверяем корректность uid, а что дальше? если использовать Header("Location: http://....") это выдаст реальное расположения файла если открыть файл выдать "поток" сразу браузер (с соответствующими заголовками, конечно) - это неприемлемо, сервер не справится с такой нагрузкой, ибо популярная файлопомойка я в чем-то не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 14:18:19 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
так же в download.php из внутренней базы берём путь к файлу, соответствующий данному uid. Запись о соответствии uid и пути к файлу во внутренней базе появляется на этапе выдачи уникального линка пользователю. После скачки, запись из БД удаляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 14:36:56 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
это-то понятно, вопрос не в этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 21:35:43 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
Тогда я не совсем понимаю в чём проблема? И почему поток с файлом нельзя сразу отдать? Чем sendfile() хуже user-space ftp-сервера? С чего вы взяли, что создание символической ссылки + выдача потом user-space демоном, да и использование любого юзер-спэйс механизма, будет быстрее чем вызов open() + sendfile()? Я думаю будет как раз наоборот и разница будет в разы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 11:47:13 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
т.е. вы предлагаете написать php-скрипт и заставить его работать на nginx (или другом подобном веб-сервере)? ибо апач от раздачи файлов пухнет неимоверно (скоко памяти есть, столько и съест) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 19:27:01 |
|
||
|
Linux: cоздание временных URL до файлов (http)(как реализовать)
|
|||
|---|---|---|---|
|
#18+
Если вы спрашиваете как бы это сделал я. Я бы написал цги-скрипт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. PS что бы апач не съедал много памяти, поробуйте подчищать перед окончанием выполнения программы динамически выделенные буферы, даже если они создаются неявно чезер new()/malloc(), так как апач при обслуживании запросов не убивает рабочий процесс, а принимает на обработку следующий запрос, таким образом накапливая утечку памяти от запроса к запросу. Через сколько запросов апач перезапускает рабочий процесс указывается в его конфигурационном файле. PS2 что бы уже совсем быть уверенным: вопрос тут не в языке програмирования или технологии или идее, вопрос в вызове функции sendfile(), не поленитесь и прочитайте ман по ней, так как от ОС к ОС технические подробности реализации этой функции могут меняться, но главное остается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 22:18:34 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=34905937&tid=1487496]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 353ms |

| 0 / 0 |
