diff --git a/src/Storage/Device/S3.php b/src/Storage/Device/S3.php index 96673196..702de56c 100644 --- a/src/Storage/Device/S3.php +++ b/src/Storage/Device/S3.php @@ -52,6 +52,8 @@ class S3 extends Device protected static int $retryDelay = 500; + protected static ?\CurlShareHandle $curlShare = null; + protected array $headers = [ 'host' => '', 'date' => '', @@ -731,7 +733,15 @@ protected function call(string $operation, string $method, string $uri, string $ $response->headers = []; // Basic setup + if (self::$curlShare === null) { + self::$curlShare = curl_share_init(); + curl_share_setopt(self::$curlShare, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); + curl_share_setopt(self::$curlShare, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); + curl_share_setopt(self::$curlShare, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); + } + $curl = curl_init(); + curl_setopt($curl, CURLOPT_SHARE, self::$curlShare); curl_setopt($curl, CURLOPT_USERAGENT, 'utopia-php/storage'); curl_setopt($curl, CURLOPT_URL, $url);