diff --git a/src/JiraClient.php b/src/JiraClient.php index 86b4db7d..5ee589e1 100644 --- a/src/JiraClient.php +++ b/src/JiraClient.php @@ -35,6 +35,11 @@ class JiraClient */ protected \CurlHandle $curl; + /** + * CURL share instance. + */ + protected \CurlShareHandle|\CurlSharePersistentHandle|null $curlShare = null; + /** * Monolog instance. */ @@ -160,6 +165,20 @@ public function curlPrepare(\CurlHandle|bool $ch, array $curl_http_headers, ?str curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->getConfiguration()->getTimeout()); } + if ($this->curlShare === null) { + if (\function_exists('curl_share_init_persistent')) { + $this->curlShare = curl_share_init_persistent([ + CURL_LOCK_DATA_DNS, + CURL_LOCK_DATA_CONNECT, + ]); + } else { + $this->curlShare = curl_share_init(); + curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); + curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); + } + } + curl_setopt($ch, CURLOPT_SHARE, $this->curlShare); + return $curl_http_headers; }