45 array $httpCodes =
null,
46 array $curlCodes =
null
59 return array(self::RETRY_EVENT);
65 'request.sent' =>
'onRequestSent',
66 'request.exception' =>
'onRequestSent',
78 $request = $event[
'request'];
79 $response = $event[
'response'];
80 $exception = $event[
'exception'];
82 $params = $request->getParams();
83 $retries = (int) $params->get(self::RETRY_PARAM);
84 $delay = $this->strategy->getBackoffPeriod($retries, $request, $response, $exception);
86 if ($delay !==
false) {
88 $params->set(self::RETRY_PARAM, ++$retries)
89 ->set(self::DELAY_PARAM, microtime(
true) + $delay);
92 $this->
dispatch(self::RETRY_EVENT, array(
93 'request' => $request,
94 'response' => $response,
95 'handle' => ($exception && $exception instanceof
CurlException) ? $exception->getCurlHandle() :
null,
96 'retries' => $retries,
109 $request = $event[
'request'];
110 $delay = $request->getParams()->get(self::DELAY_PARAM);
113 if (
null !== $delay && microtime(
true) >= $delay) {
116 $request->getParams()->remove(self::DELAY_PARAM);
119 $request->getBody()->seek(0);
121 $multi = $event[
'curl_multi'];
122 $multi->remove($request);
123 $multi->add($request);