¿No bloquean las solicitudes HTTP en PHP orientado a objetos?

Tengo una aplicación cliente de PHP que está interactuando con un servidor RESTful. Cada instancia de PHP Goat en el cliente debe inicializarse basándose en la información de una solicitud / goat en el servidor (por ejemplo, / goat / 35, / goat / 36, etc.). Lo hace enviando una solicitud HTTP a su URL correspondiente a través de cURL. Trabajar con más de 30 objetos de cabra por carga de página equivale a más de 30 solicitudes HTTP, y cada una toma 0.25 segundos, eso es baaaad, como dirían mis cabras. La carga perezosa y el almacenamiento en caché de las respuestas en la memoria ayudan, pero no lo suficiente.

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

La ventaja de esta técnica es que mis cabras son inteligentes y encapsuladas. La desventaja es que el rendimiento es horrible. Las cabras no saben cómo poner en cola sus solicitudes HTTP, una cabra no sabe si hay otras cabras que necesitan iniciar una solicitud, etc. Supongo que una alternativa sería construir las cabras externamente:

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

Estoy seguro de que este es un dilema bien conocido de OO / REST que hay formas más avanzadas de resolver, simplemente no sé dónde buscar. ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta