Автор Тема: Ограничивание потоков скачивания и не только  (Прочитано 3452 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн scor

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Подскажите знающие люди, plzz..

Каким образом можно проконтролировать количество потоков скачивания файлов с сервера и сам процесс скачивания? Т.е., допусмтим, надо выдать браузеру 3 ссылки на скачивание файла, одновременно можно закачивать только 2 и как только процесс скачивания будет завершен сразу их убирать?

Заранее спасибо..

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
scor
Заводишь у себя на сервере (в базе, в файле, whatever) запись типа
random_id -> /dir/file.ext

Человеку отдаешь ссылку типа
your.script?file=random_id

При обращении по этой ссылке уже производишь какие-то логические действия, и в конечном итоге отдаешь либо не отдаешь файл.

Ищи по форуму, много раз разжевывался процесс.
LJ: Backslashed life (rss)

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
scor
А вот
Цитировать
scor:
Ограничивание потоков скачивания

это немножко не то. Там больше настройка сервера.
LJ: Backslashed life (rss)

Оффлайн scor

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
хмм... а если, например, делать через сессии, то можно всё это вместе удобно увязать... напрмер, вот так сделать:

if (!isset($_SESSION[\'links\']))
$_SESSION[\'links\']=array();
if (!isset($_SESSION[\'downloaded\']))
$_SESSION[\'downloaded\']=array();

есть какой-то списко файлов
$filesist=array(\'file.zip\',\'file1.zip\'); ...

генерим для каждого уникальный хеш, каждый раз разный, при этом не даём файлов, которые в скачке
foreach($filelist as $file)
if (!in_array($file,$_SESSION[\'downloaded\']))
$_SESSION[\'links\'][md5(microtime)]=$file;

выдаём линки с актуальными хешами, файл прячем
foreach($_SESSION[\'links\'] as $hash=>$real)
echo \'file\';

потом в каком-нить get.php перехватываем ту же сессию, и
if (isset($_SESSION[\'links\'][$_SERVER[\'QUERY_STRING\']]))
{
пишем что качается
$_SESSION[\'downloads\'][]=$_SESSION[\'links\'][$_SERVER[\'QUERY_STRING\']]);
и убираем хеш
unset($_SESSION[\'links\'][$_SERVER[\'QUERY_STRING\']]);
тут же можно провирать count(downloaded) и всё такое
}


хотя ты это прочел уже, наверное..))

Оффлайн scor

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Цитировать
CGVictor:
Человеку отдаешь ссылку типа your.script?file=random_id

При обращении по этой ссылке уже производишь какие-то логические действия, и в конечном итоге отдаешь либо не отдаешь файл.

вопрос в том, чтобы убрать эту ссылку сразу же, после того, как файл докачается..

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
scor
Цитировать
scor:
сразу же, после того, как файл докачается

Не докачается, прошу заметить, а начнет скачиваться. Определить, докачал ли пользователь файл, или посеял его где-то по пути, ты не сможешь.

Принята практика использовать время истечения ссылки. Т.е. по ссылке script.php?file=id можно обращаться в течении, скажем, одного часа.

Про сессии не разбирался, ибо лень.
LJ: Backslashed life (rss)

Оффлайн scor

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Цитировать
CGVictor:
Не докачается, прошу заметить, а начнет скачиваться. Определить, докачал ли пользователь файл, или посеял его где-то по пути, ты не сможешь.

Хм.. а как тогда сделано на allofm3.ru ? Да. там ссылки на файлы хранятся условно 24 часа, НО,  если их скачать раньше, то сразу же(!) после того, как файл докачивается эта ссылка пропадает(!) из списка. Посмотри ради интереса..

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
scor
Понимаешь, не факт, что он докачивается. Он отдается пользователю. Хотя во многих случаях - это и требуется.
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28