에서 거부 동시 요청에 대한 응답 : http://docs.guzzlephp.org/en/latest/quickstart.html#concurrent-requests액세스 내가 목구멍 동시성 요청 도구를 사용하고 목구멍
내 코드 예제 코드와 유사합니다
use GuzzleHttp\Pool;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
$requests = function ($total) {
$uri = 'http://127.0.0.1:8126/guzzle-server/perf';
for ($i = 0; $i < $total; $i++) {
yield new Request('GET', $uri);
}
};
$pool = new Pool($client, $requests(100), [
'concurrency' => 5,
'fulfilled' => function ($response, $index) {
// this is delivered each successful response
},
'rejected' => function ($reason, $index) {
// this is delivered each failed request
},
]);
// Initiate the transfers and create a promise
$promise = $pool->promise();
// Force the pool of requests to complete.
$promise->wait();
문제는 내 요청의 일부가 500 HTTP 응답으로 응답을 반환하지만 일부 내용을 계속 전송합니다 (예 : 오류가 발생한 이유). 죄송합니다 유감스럽게도 클래스의 HTTP 응답을 '거부 됨'으로 500 상태 코드와 함께, 그리고 그 매개 변수는 거부 된 기능에 존재하지 않기 때문에 나는 원래의 응답을 얻을 수가 없습니다.
그러나 $reason
에 액세스 할 수 있습니다. 이 원래의 응답이 포함되어 있지만
GuzzleHttp\Exception\ServerException: Server error: `GET http://example.com` resulted in a `500 Internal Server Error` response: {"failure_reason":"Useful message"} in [...stacktrace ...]
, 나는 쉽게로 추출 할 수 없습니다 :
이{
xdebug: "..."
}
xdebug
속성은 같은 보이는 문자열로 HTML을 포함 : 내 경우에는 그렇게 같은 JSON을 포함 그것의 HTML에서 숨겨져있어 매우 유용하지 않습니다. 나는 또한 이것이 어떻게 처음부터 설정되었는지 전혀 모른다.
따라서 제 질문은 거부 된 동시 요청에 대한 응답에 어떻게 액세스 할 수 있습니까?