@@ -95,6 +95,12 @@ class Http
9595 * @var null|resource
9696 */
9797 private $ stdErrOut = null ;
98+
99+ /**
100+ * @var null|resource
101+ */
102+ private $ handle = null ;
103+
98104 /**
99105 * Http constructor.
100106 * @param string $host
@@ -235,7 +241,7 @@ private function getUrl($params = []): string
235241 */
236242 private function newRequest ($ extendinfo ): CurlerRequest
237243 {
238- $ new = new CurlerRequest ();
244+ $ new = new CurlerRequest (false , $ this -> getHandle () );
239245
240246 switch ($ this ->_authMethod ) {
241247 case self ::AUTH_METHOD_QUERY_STRING :
@@ -266,7 +272,8 @@ private function newRequest($extendinfo): CurlerRequest
266272 }
267273
268274 $ new ->timeOut ($ this ->settings ()->getTimeOut ());
269- $ new ->connectTimeOut ($ this ->_connectTimeOut );//->keepAlive(); // one sec
275+ $ new ->connectTimeOut ($ this ->_connectTimeOut );
276+ $ new ->keepAlive ();
270277 $ new ->verbose (boolval ($ this ->_verbose ));
271278
272279 return $ new ;
@@ -569,7 +576,7 @@ public function getRequestWrite(Query $query): CurlerRequest
569576 */
570577 public function ping (): bool
571578 {
572- $ request = new CurlerRequest ();
579+ $ request = new CurlerRequest (false , $ this -> getHandle () );
573580 $ request ->url ($ this ->getUri ())->verbose (false )->GET ()->connectTimeOut ($ this ->getConnectTimeOut ());
574581 $ this ->_curler ->execOne ($ request );
575582
@@ -802,4 +809,22 @@ public function streamWrite(Stream $streamWrite, $sql, $bindings = []): Statemen
802809 $ request = $ this ->writeStreamData ($ sql );
803810 return $ this ->streaming ($ streamWrite , $ request );
804811 }
812+
813+ public function __destruct ()
814+ {
815+ if ($ this ->handle ) {
816+ curl_close ($ this ->handle );
817+ }
818+ }
819+
820+
821+ public function getHandle ()
822+ {
823+ if (!$ this ->handle ) {
824+ $ this ->handle = curl_init ();
825+ }
826+
827+ return $ this ->handle ;
828+ }
829+
805830}
0 commit comments