Привет. Доделал "отдавалку" контента, чтобы можно было какой-то тип контента (или любой) на неё передавать. Иногда полезно в виде антилича использовать. А готовая программка, которая всегда под боком - нет-нет, да пригодится. Короче. Вооот. Ну. Это самое. Вооот. Начал тестировать яротно и столкнулся с жопой в виде качалки FlashGet. Хрень в том, что если ограничить кол-во потоков через антилич, то эти самые потоки в программе ну никак не останавливаются, а долбятся и долбятся. Ладно ещё когда заголовок 200, но я ставил и 404. Откровенно говоря, все двухсотые перепробовал, трёхсотые, четырёхсотые и даже пятисотые. Я "Флэшгету" что только не пи*дел, а ему один хрен - продолжает ломится. Заголовки "Флэшгет" принимает, но не понимает. Может, кто-нибудь случайно знает как такое победить? Чтобы все неактивные потоки "отвалились", а не стучали туда, где их не ждут и вообще не любят. P.S. Завтра скачаю ещё какие-нибудь качалки.
Да, наверное, так и поступлю - забью на это. З.Ы. О, у меня было 666 сообщений. %) upd в догонку. А какой заголовок об ошибке будет самым правильным для лишних потоков? Я склоняюсь к 403-ей ошибке.
lexa Это сделано в интересах тех, кто скачивает на многих серверах прописано максимальное количество потоков (неважно, с каких IP, можно 10 потоков с одного адреса, а можно по одному потоку с десяти разных адресов, но не более). И эти сервера точно так же возвращают коды ошибки как Бог на душу положит. Поэтому качалки ломятся на сервер, стараясь подхватить лишний поток, как только он освободится, а коды ошибок игнорируют. Впрочем, можно скормить клиенту редирект (Location куда-нибудь далеко-далеко... тогда он продолжит ломиться, но уже на другой сервер
Dagdamor, если я потоку сделаю редирект и программа это сьест, то в файл будет записана левая хренатень. mmaavv, вопроса "как ограничить" нет. Всё легко и просто. Несколько строк на PHP + немного мускула и всё работает как часы. Пока не сдохнет сервер, да. %) Кстати, идея блокировкой всего IP чем-то внешним во-первых, неудобна. Во-вторых, убьёт не только лишнии потоки, но и всю скачку.
lexa а если просто die(); и ничего не посылать, даже заголовков? или если без Accept-Range и всегда отдавать Content-Range начиная с 0 - как реагируют качалки?
Как я понял, качалки игнорируют заголовки и используют внутреннии данные: первый поток приконектился, получил правильные заголовки, а все дальнейшии потоки отдают только свой range и шлют ответы сервер на. Поэтому я забил на это дело и сделал только ограничение на скорость. Совокупность потоков или один поток - это на скорость не влияет, она фиксированная.