[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скачивание файлов с сервера через PHP скрипт
Kolin
Вот хочу создать свой сайт со своей цмс и т.п..
Появилась потребность в отдачи файла пользователю без указания реальных путей.
можно было воспользоваться банальным readfile(), но в этом случае не будет возможности докачивать файл, что для меня критично smile.gif.

Однажды собрал все сопли в кулак, сел за клавиатуру ( обычно я сплю за ней smile.gif ) и написал...
Почти все получилось, кроме ограничения на кол-во одновременных потоков с одной сессии:
Пробовал через $_SESSION - не вышло, сессия обнулялась при новом запросе...


Программист из меня на самом деле плохой: изучаю С/С++ уже второй год а написать калькулятор не могу smile.gif
PHP изучал на полгода больше...


ссылка на архив со скриптом: http://mffilin.narod.ru/dfs.rar



Спустя 17 часов, 14 минут, 3 секунды (5.01.2008 - 12:35) lenich написал(а):
Я так понял что разделение на потоки осуществляется таким образом, что клиент посылает несколько запросов с разными непересекающимися $HTTP_SERVER_VARS["HTTP_RANGE"]? Можно завести БД и там хранить количество текущих нитей на каждый скачиваемый файл. И по надобности отклонять запрос на скачку, если число нитей по базе уже больше или равно допустимому.
Код
Программист из меня на самом деле плохой: изучаю С/С++ уже второй год а написать калькулятор не могу

На WinApi чтоли пишете?)

Спустя 10 минут, 39 секунд (5.01.2008 - 12:45) lenich написал(а):
По поводу обнуления сессии: не пробовал делать докачку - не знаю как там бразер работает с сессиями, но наверное можно посмотреть id сессий в запросе т.е. если клиент каждый раз при докачке присылает в запросе разные id сессии - то ясное дело, что она обнулится. А если клиент присылает одинаковые id сессии - то проблема где-то у вас в коде. Опять же сессии имеют свое время жизни т.е. по дефолту через 20 минут сессия скорее всего умрет.

Спустя 3 часа, 25 минут, 57 секунд (5.01.2008 - 16:11) Kolin написал(а):
Я пробовал завести БД для закачек - но есть одно но:
нужно знать, или присвоить идентификатор пользователю для того чтоб установить кол-во потоков, единственное что пришло на ум - сессии, но самое интересное: при использовании сторонней бд(например файлики smile.gif) счетчик не увеличивался... Правда однажды произошло чудо - все работало как надо smile.gif даунлоад мастер открыл пять потоков, и больше не смог(как и нужно было), однако больше подобного не было.... Выяснить почему мне не удалось sad.gif

Цитата(lenich @ 5.1.2008, 19:35) [snapback]31324[/snapback]
На WinApi чтоли пишете?)


нет и не собираюся ибо винду в топку, сижу под ней только по тому что под линухом не смог настроить модем ( не могу приконетится к другу, а у него безлимит smile.gif )


P.S. кстати, архивчик по ссылке переодически обновляется smile.gif

Спустя 38 минут, 53 секунды (5.01.2008 - 16:50) lenich написал(а):
Надо проверить все идентификаторы сессии, которые передаются между клиентом и сервером при закачке. Они должны быть постоянными. Вроде должны сессии работать - у вас наверное где-то ошибка.
Код
Выяснить почему мне не удалось

Ну это я всем советую - скачайте сниффер и выясните)

Спустя 1 день, 43 минуты, 14 секунд (6.01.2008 - 17:33) Kolin написал(а):
если хорошо подумать, то можно обойтись и без сниффера, ведь идентификатор хранится в кукисах или в запросах, а на них можно и в логах посмотреть, или самому накатать.


Скрипт, кстати, обновился smile.gif.
Только теперь у меня возникла одна проблема: если скрипт выполняется, то больше никакие пхп скрипты не выполняются, пока этот не закончит выполнятся sad.gif, че делать - не знаю, подозреваю сервак... smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.