Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Паралельная загрузка удаленных данных, правильно ли решил проблемму? 
:(
    Опции темы
solenko
Дата 18.7.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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, в который передаем ответ сервера

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


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.