Nicht blockierende HTTP-Anfragen in objektorientiertem PHP?

Ich habe eine PHP-Client-Anwendung, die mit einem RESTful-Server verbunden ist. Jede PHP Goat-Instanz auf dem Client muss sich basierend auf Informationen in einer / goat-Anforderung auf dem Server initialisieren (z. B. / goat / 35, / goat / 36 usw.). Dazu sendet es eine HTTP-Anforderung über cURL an die entsprechende URL. Das Arbeiten mit mehr als 30 Ziegenobjekten pro Seitenladevorgang entspricht mehr als 30 HTTP-Anforderungen und jede dauert 0,25 Sekunden - das ist baaaad, wie meine Ziegen sagen würden. Das langsame Laden und Zwischenspeichern der Antworten im Speicher ist hilfreich, aber nicht ausreichend.

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

Der Vorteil dieser Technik ist, dass meine Ziegen alle intelligent und gekapselt sind. Der Nachteil ist, dass die Leistung schrecklich ist. Die Ziegen wissen nicht, wie sie ihre HTTP-Anfragen in die Warteschlange stellen sollen, eine Ziege weiß nicht, ob es andere Ziegen gibt, die eine Anfrage einleiten müssen usw. Eine Alternative wäre, die Ziegen extern zu bauen:

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

Ich bin mir sicher, dass dies ein bekanntes OO / REST-Dilemma ist, für das es fortgeschrittenere Lösungswege gibt. Ich weiß nur nicht, wo ich suchen soll. Irgendwelche Ideen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage