Неблокирующие HTTP-запросы в объектно-ориентированном PHP?

У меня есть клиентское приложение PHP, которое взаимодействует с сервером RESTful. Каждый экземпляр PHP Goat на клиенте должен инициализироваться на основе информации, содержащейся в запросе / goat на сервере (например, / goat / 35, / goat / 36 и т. Д.). Это делается путем отправки HTTP-запроса на соответствующий URL-адрес через cURL. Работа с более чем 30 объектами козы на загрузку страницы равняется 30+ HTTP-запросам, и каждый из них занимает 0,25 секунды - этоs baaaad, как сказали бы мои козы. Ленивая загрузка и кэширование ответов в памяти помогает, но недостаточно.

foreach ($goats as $goat) {
   $goat->getName() // goat needs to hit the REST API
}

Преимущество этой техники в том, что все мои козы умные и инкапсулированные. Недостаток в том, что производительность ужасна. Козлы нене знает, как поставить в очередь свои HTTP-запросы, один козел неЯ не знаю, есть ли другие козы, которым нужно инициировать запрос и т. д. Я думаю, что одной из альтернатив будет внешнее создание коз: I '

$urls = array('http://', 'http://', ...);  // array of goat URLs
$result = fancy_pipelined_http_request_queue($urls);
foreach ($result as $xml) {
   $goat->buildSelfFromXML($xml);
}

я уверен, что это хорошо известная дилемма OO / REST, что есть более продвинутые способы решения, я просто нене знаю, где искать. Есть идеи? Я

Ответы на вопрос(1)

Ваш ответ на вопрос