Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Сеть > Многопоточность + разбитие |
Автор: slva2000 5.12.2010, 13:16 | ||
Доброго дня. Задача: скачать файл с удалённого сервера, разбив его на несколько частей, и добавив каждую часть в мультипоточное скачивание. Пытался использовать отличный класс http://www.phpclasses.org/package/4091-PHP-Retrieve-multiple-pages-simultaneously.html но не удалось реализовать до конца - не нашлось опции для ограничения "верхней" планки (т.е. позиции, до которой скачивать очередную часть файла), в то же время есть опция CURLOPT_RESUME_FROM, позволяющая получать контент с указанной позиции, в байтах. С позициями всё как бы ясно, например так:
но вот с многопоточностью пока не додумал. Может есть готовые решения? Спасибо. |
Автор: umka 5.12.2010, 14:05 |
Думаю, нужно сначала "разметить" файл на несколько кусков (у каждого куска есть стартовая позиция и длина), а потом уже после fork-а, каждый child скачает свой кусочек и запишет его в нужное место сохраняемого файла. |
Автор: slva2000 5.12.2010, 14:33 | ||
Вот набрасал... В результате получается именнованный массив, в котором: имя ключа - с какой позиции забирать данные значение ключа - до какой позиции забирать данные |
Автор: slva2000 5.12.2010, 17:02 | ||
Дописал полностью код с использовапнием Curl (ссылка на класс в первом посте):
Т.о. получился значительный прирост при получении файла с сервера, который ограничивает скорость отдачи. Файл размером 25 Мб заливается на сервер за 25 сек, при том, что скорость отдачи сервера не более 60 кБ/сек. |