![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
Дано:
Есть набор страниц, контент которых -- данные с удаленных серверов. При этом на одной странице могут использоватся данные с нескольких серверов, список которых заранее не известен. Также, к некотороым серверам, для получения данных, необходимо выполнить несколько последовательных запросов. Задача: организовать паралельную загрузку данных Для паралельной загрузки решил использовать curl_multi_*. Основной проблеммой для меня стало как раз то, что набор серверов для удаленной загрузки заранее не известен. Я решил это следующим образом: Алгоритм: 1. Статический метод LoadData класса RemoteDataLoader получает на вход список источников данных, с которых нужно загрузить контент. 2. RemoteDataLoader инстанцирует объект каждого из этих классов (все они используют singleton) (ConcretDataHandler) 3. Пока !ConcretDataHandler->dataLoaded() 3.1. забираем подготовленный для загрузки curl_handler (метод getCurlHandlers возвращает массив в котором ключи -- имя callback метода, а значения curl_handler) 3.2. Выполняем паралельную загрузку для всех источников 3.3. Для каждого curl_handler вызываем callback, в который передаем ответ сервера Вопрос: После написания всего этого меня не оставляет ощущение, что что-то я не додумал и можно сделать намного проще/эффективней. Прощу, оцените предложенное мной решение и, возможно, предложите свое. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |