Nesne yönelimli PHP HTTP isteklerini engellenmeyen?

1 Cevap php

Ben bir sığınakta sunucusu ile etkileşimde bir PHP istemci uygulaması var. Istemci üzerinde her PHP Keçi örneği sunucu üzerinde bir / keçi istek bilgilerinin (örn. / goat/35, / goat/36, vb) dayalı kendisini başlatmak gerekiyor. Bu cURL ile kendi gelen URL'ye HTTP isteği göndererek yapar. Sayfa yük başına 30 + keçi nesnelerle çalışma 30 + HTTP istekleri eşittir, ve her biri 0,25 saniye sürüyor - Benim keçi söyleyebilirim ki, baaaad bulunuyor. Tembel-yükleme ve bellekte yanıt önbelleğe yardımcı olur, ama yeterli değil.

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

Bu tekniğin avantajı, benim keçi tüm akıllı ve kapsül olmasıdır. Dezavantajı performansı kötü olmasıdır. Keçiler ben bir alternatif dışarıdan keçileri oluşturmak olacaktır sanırım, vb isteği başlatmak gerek diğer keçiler varsa bir keçi bilmiyor onların HTTP istekleri sıraya nasıl bilmiyorum:

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

Bu, sadece bakmak için bilmiyorum çözme daha gelişmiş yolu vardır bir bilinen OO / DİNLENME ikilemi eminim. Herhangi bir fikir?

1 Cevap

İsterseniz engellenmeyen girişleri kullanabilirsiniz. Bu kıvırmak kenara tekme gerekir gibi onlara geçmek için kodlama biraz içerir. Eğer gerçekten aynı anda isteklerini gerçekleştirmek mümkün olacaktır çünkü ancak bu performansını artırabilir.

socket_set_blocking / stream_set_blocking işlevleri bakın.