/** * Executes multi curl requests and return response. Response is returned in an array and * result array contains responses in same order in what requests were added. Response array format is * array(array(self::SRV_CODE => 'http_response_code', self::SRV_RESPONSE => 'response', * self::SRV_ERROR_CODE => 'any error code', self::SRV_ERROR => 'any error string'), ...) * * @param int $_maxConcurrent Executes this numbers of requests in parallel * @author Atul Atri * @return array e.g array() */ public function ExecuteMultiCurl($_maxConcurrent = 10, $_isRetry = false) { $_multiCurlResponseArr = parent::ExecuteMultiCurl($_maxConcurrent); $_isAll401 = true; foreach ($_multiCurlResponseArr as $_nextResponse) { if ($_nextResponse[self::SRV_CODE] != 401) { $_isAll401 = false; break; } } if (!$_isRetry && $_isAll401) { $this->_reqRetryCount = 0; } if ($_isAll401 == 401 && $this->_reqRetryCount < $this->_maxSendReqRetries) { $this->_CurlCurrentIndex = 0; //most probably token expired...ask oauth lib to regenerate token $_refreshed = SWIFT_APIOauth2::RefreshToken(); if ($_refreshed) { $this->_reqRetryCount++; $this->ModifyAuthHeader(); return $this->ExecuteMultiCurl($_maxConcurrent, true); } } return $_multiCurlResponseArr; }