Amacım, PUT json verilerini içeren bir zamanuyumsuz istek havuzu oluşturmak için Guzzle 6 kullanmaktır. Ardından her bir $ promise başarısını/başarısızlığını izleyin. Benim HAVUZ kod örneğine Karşılaştırma için Guzzle 6'yı, API bitiş noktalarına göndermek üzere eşzamanlı olmayan json istekleri havuzu oluşturmak için kullanmanın doğru yolu nedir?
, $ client-> istek() için aşağıdaki tek istekli kodlanmış json için 3 parametreyi dönüştürür ve sonra İçerik-türü ekler. application/json **$client = new Client([
'base_uri' => BASE_URL . 'test/async/', // Base URI is used with relative requests
'timeout' => 0, // 0 no timeout for operations and watching Promises
]);
$response = $client->request('PUT', 'cool', ['json' => ['foo' => 'bar']]);
alıcı API bitiş tarihinde
, ben aşağıdakileri yaparak yukarıda tek isteğinden json okuyabilir:() yeni İsteği kullanılarak concurrent requests example in the docs, for creating a Pool of asynchronous requests kullanma
$json = file_get_contents('php://input');
$json = json_decode($json, true);
, ben ümit Aynı parametreler (yöntem, url son noktası, json bayrağı), yukarıdaki tek $ client-> request() örneğinde olduğu gibi kullanılabilir. Ancak, yield new Request()
, $client->request()
gibi 3. json parametresini işlemez. Havuz kodumdan json ve içerik türünü doğru şekilde ayarlamak için arayacağınız doğru Guzzle işlevi nedir? Veya büyük bir zaman uyumsuz istek havuzu oluşturmak ve sonuçlarını izlemek için daha iyi bir yol var mı?
HAVUZ kod örneği: Umarım
$this->asyncRequests = [
[
'endpoint' => 'cool'
],
[
'endpoint' => 'awesome'
],
[
'endpoint' => 'crazy'
],
[
'endpoint' => 'weird'
]
];
$client = new Client([
'base_uri' => BASE_URL, // Base URI is used with relative requests
'timeout' => 0 // 0 no timeout for operations and watching Promises
]);
$requests = function ($asyncRequests) {
$uri = BASE_URL . 'test/async/';
foreach ($asyncRequests as $key => $data) {
yield new Request('PUT', "{$uri}{$data['endpoint']}", ['json' => ['foo' => 'bar']]);
}
};
$pool = new Pool($client, $requests($this->asyncRequests), [
'concurrency' => 10,
'fulfilled' => function ($response, $index) {
$this->handleSuccessPromises($response, $index);
},
'rejected' => function ($reason, $index) {
$this->handleFailurePromises($reason, $index);
},
]);
$promise = $pool->promise(); // Initiate the transfers and create a promise
$promise->wait(); // Force the pool of requests to complete.
Kahretsin, bu gövde anlamak için aldı ve json 4 parametrede nasıl olması gerektiğini uzun zaman: tasız kod örnektir! Bunu açık bir şekilde açıkladığın için teşekkürler! –