![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
slva2000 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
Доброго дня.
Задача: скачать файл с удалённого сервера, разбив его на несколько частей, и добавив каждую часть в мультипоточное скачивание. Пытался использовать отличный класс MultiCurl но не удалось реализовать до конца - не нашлось опции для ограничения "верхней" планки (т.е. позиции, до которой скачивать очередную часть файла), в то же время есть опция CURLOPT_RESUME_FROM, позволяющая получать контент с указанной позиции, в байтах. С позициями всё как бы ясно, например так:
но вот с многопоточностью пока не додумал. Может есть готовые решения? Спасибо. Это сообщение отредактировал(а) slva2000 - 5.12.2010, 13:17 |
|||
|
||||
umka |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 23.1.2004 Репутация: нет Всего: 0 |
Думаю, нужно сначала "разметить" файл на несколько кусков (у каждого куска есть стартовая позиция и длина), а потом уже после fork-а, каждый child скачает свой кусочек и запишет его в нужное место сохраняемого файла.
|
|||
|
||||
slva2000 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
Вот набрасал... В результате получается именнованный массив, в котором: имя ключа - с какой позиции забирать данные значение ключа - до какой позиции забирать данные |
|||
|
||||
slva2000 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
Дописал полностью код с использовапнием Curl (ссылка на класс в первом посте):
Т.о. получился значительный прирост при получении файла с сервера, который ограничивает скорость отдачи. Файл размером 25 Мб заливается на сервер за 25 сек, при том, что скорость отдачи сервера не более 60 кБ/сек. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |