| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > скачка в один поток |
| Автор: admsasha 3.7.2005, 09:38 |
| Как сделать что бы скачивать через скрипт можно было только в один поток ? какой параметр ставиться ? |
| Автор: korob2001 3.7.2005, 10:40 |
| admsasha - если у тебя есть желание, давай сегодня вечером или завтра напишем вместе то, что тебе нужно. Для подсчёта кол-ва скачиваний совсем не нужно делать один поток. |
| Автор: admsasha 3.7.2005, 12:21 | ||
при многопоточной закачки у меня сервер от httpd вешается... поэтому и хочу сделать однопоточную... хорошо жду вечера... надеюсь все решим, если что то я просто в invisible |
| Автор: korob2001 4.7.2005, 20:39 | ||||
| Привет, вобщем написал тут такую программу, она кончечно же не совсем то, что тебе нужно, но очень похожа. Делает он следующее: 1. Генерирует форму для добавления ссылки. 2. На странице с формой, выводит все ссылки. 3. Отслеживает и считает кол-во кликов, а так же отслеживает что бы количество переходов по ссылке не привышало то, которое указано в базе данных, в качестве максимального. Если же ссылку нужно показывать бесконечно, нужно установить значение максимально допустимых кликов в 0, если же установлена другая цифра, то как только счётчик дойдёт до этого числа, то эту ссылку программа показывать больше не будет. Если добавить в эту программу проверку данны, полученных от пользователя, так же оптимизировать SQL запросы, и написать программу которая будет запускаться время от времени и удалять те ссылки, которые уже показаны нужное число раз, а так же отдельный вход для админа ( с исчезающей дверью Тебе же вместо формы добавления ссылки нужно генерить форму загрузки файла на сервер. После загрузки программа генерирует случайное имя файлу, переименовывать его и записывать его имя в базу данных. Всё остальное, точьно так же. Теперь о коде, для начала выполни такой SQL запрос:
Теперь просто сохрани этот код в файл с любым именем, лишь бы расширение было как у выполняемого файла, обычно .cgi, .pl, в каталог cgi-bin/.
Enjoy ;)))) ЗЫ: проверки полученных данных и админки здесь нет, соответственно пока вы этого не сделаете, не стоит выкладывать её в глобальную сеть, иначе будете наблюдать на своём сайте надпись типа: Hacked by nE05idE71Fdl Удачи. |
| Автор: admsasha 5.7.2005, 03:31 | ||
Как я понимаю это редирект на файл ? а что мне мешает, узнать полный путь к файлу, и качать без ограничений ? |
| Автор: korob2001 5.7.2005, 04:32 |
| А ты пробовал?? Если да, то как??? |
| Автор: admsasha 5.7.2005, 14:45 | ||||
во всем этом и заключается проблема скрипт назвал load.cgi, качаю файл через ReGet
|
| Автор: korob2001 5.7.2005, 21:00 | ||
Странно, а у меня вот, что пишет.
Ты как путь указываешь??? |
| Автор: admsasha 6.7.2005, 03:41 | ||
$url="unload/file227392214.rar"; |
| Автор: korob2001 6.7.2005, 04:50 |
| Попробуй так: Создай в каталоге /www, каталог soft/, т.е. /www/soft/. В него кинь свой файл. запусти скрипт и заполни поля, например: Заголовок ссылки: Мой файл Ссылка: http://localhost/soft/file227392214.rar Максимум скачиваний: 10 После жми кнопку ДОБАВИТЬ. Затем жми на ссылку, которую ты хочешь скачать, если ты качаешь файл через свою программу, вот и указывай путь к Perl файлу, код которого я выложил, т.е. http://localhost/cgi-bin/linkcounter.pl?id=1 |
| Автор: admsasha 6.7.2005, 07:29 | ||
| Скрипт твой, данные точно такие какие ты сказал. вот полный лог ReGet, без вырезок.
P.S. не могу не как поймать тебя в ICQ |
| Автор: admsasha 6.7.2005, 20:02 |
| вообщем попробывыл lock, блокировки неправильно снимаются, и всё равно (но это смотреть код надо внимательнее) качает в несколько секций. выход нашел только один if(exists($ENV{'HTTP_RANGE'})){exit;} минусы - нет подержки докачки. можно конечно перед каждым выводом буфера ставить в базу метку, что-то типа пинга. т.е. вывел 1024 байт, поставил пинг в базе а выше указать, если последнее время пинга < 10 секунд, то закрыть, и не дать качать. но мне кажется что будет сильно из-за этого тормозить систему |