public function sendConcurrentRequests() {
$client = new Client(['timeout' => 5]);
$promises[] = $client->getAsync('http://example.com/1');
$promises[] = $client->getAsync('http://example.com/2');
$promises[] = $client->getAsync('http://example.com/3');
$results = Promise\unwrap($promises);
return $results;
}
Her istek 1 ila 10 saniye sürebiliyor, ama ben en fazla 5 saniye bekleyin taleplerinin hiçbirini istemiyorum
(bu yüzden zaman aşımı ayarlıyorum). Ne olur umuyorum şudur:
- İsteği 1, 2 ve 3 isteği iptal edilir böylece Talebi 2, en fazla 5 saniye sürer
- başlatılır ve isteklerini 1 ve 3 numaralı tepkiler, hangi 'Talebi 2 en fazla 3 saniye sürer, bu nedenle unwrap işlevi
ConnectException
atar ve elimden - talep 1, 2 ve 3 başlatılır - : zamanında,
döndürülür yanıt verdi Bu gerçekten oluyor ne 1 ve 3 numaralı istemlerden yanıt alın.
Bu çalışmayı, zaman içinde gönderilen isteklerden geçerli yanıtları alabilmem için nasıl yapabilirim?
Farkı başka bir örnekle açıklamak isteyen herkes için: http://docs.guzzlephp.org/en/latest/quickstart.html?highlight=promise#concurrent-requests –
Bu özellik, söz konusu olduğunda belgelenmemiş soru yayınlandı, bu yüzden dokümanlar için ekledim: D https://github.com/guzzle/guzzle/commit/812f3a83e5de84a089369ce07452fa9d45d2dd1d – kenske