mirror of
https://github.com/curl/curl.git
synced 2026-08-26 13:03:32 +03:00
CURLOPT_MAXLIFETIME_CONN: maximum allowed lifetime for conn reuse
... and close connections that are too old instead of reusing them. By default, this behavior is disabled. Bug: https://curl.se/mail/lib-2021-09/0058.html Closes #7751
This commit is contained in:
parent
013cb2ff7d
commit
5f563495f1
16 changed files with 272 additions and 12 deletions
|
|
@ -492,7 +492,9 @@ Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP
|
|||
.IP CURLOPT_FORBID_REUSE
|
||||
Prevent subsequent connections from re-using this. See \fICURLOPT_FORBID_REUSE(3)\fP
|
||||
.IP CURLOPT_MAXAGE_CONN
|
||||
Limit the age of connections for reuse. See \fICURLOPT_MAXAGE_CONN(3)\fP
|
||||
Limit the age (idle time) of connections for reuse. See \fICURLOPT_MAXAGE_CONN(3)\fP
|
||||
.IP CURLOPT_MAXLIFETIME_CONN
|
||||
Limit the age (since creation) of connections for reuse. See \fICURLOPT_MAXLIFETIME_CONN(3)\fP
|
||||
.IP CURLOPT_CONNECTTIMEOUT
|
||||
Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP
|
||||
.IP CURLOPT_CONNECTTIMEOUT_MS
|
||||
|
|
|
|||
|
|
@ -57,3 +57,4 @@ Always
|
|||
Returns CURLE_OK
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXCONNECTS "(3), "
|
||||
.BR CURLOPT_MAXLIFETIME_CONN "(3), "
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
|
|||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);
|
||||
.SH DESCRIPTION
|
||||
Pass a long as parameter containing \fImaxage\fP - the maximum time in seconds
|
||||
that you allow an existing connection to have to be considered for reuse for
|
||||
this request.
|
||||
that you allow an existing connection to have been idle to be considered for
|
||||
reuse for this request.
|
||||
|
||||
The "connection cache" that holds previously used connections. When a new
|
||||
request is to be done, it will consider any connection that matches for
|
||||
|
|
@ -62,4 +62,4 @@ Added in libcurl 7.65.0
|
|||
Returns CURLE_OK.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_FORBID_REUSE "(3), "
|
||||
.BR CURLOPT_FRESH_CONNECT "(3), "
|
||||
.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXLIFETIME_CONN "(3), "
|
||||
|
|
|
|||
66
docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
Normal file
66
docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_MAXLIFETIME_CONN 3 "10 Nov 2021" "libcurl 7.80.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXLIFETIME_CONN, long maxlifetime);
|
||||
.SH DESCRIPTION
|
||||
Pass a long as parameter containing \fImaxlifetime\fP - the maximum time in
|
||||
seconds, since the creation of the connection, that you allow an existing
|
||||
connection to have to be considered for reuse for this request.
|
||||
|
||||
libcurl features a connection cache that holds previously used connections.
|
||||
When a new request is to be done, it will consider any connection that matches
|
||||
for reuse. The \fICURLOPT_MAXLIFETIME_CONN(3)\fP limit prevents libcurl from
|
||||
trying very old connections for reuse. This can be used for client-side load
|
||||
balancing. If a connection is found in the cache that is older than this set
|
||||
\fImaxlifetime\fP, it will instead be closed once any in-progress transfers
|
||||
complete.
|
||||
|
||||
If set to 0, this behavior is disabled: all connections are eligible for reuse.
|
||||
.SH DEFAULT
|
||||
Default \fImaxlifetime\fP is 0 seconds (i.e., disabled).
|
||||
.SH PROTOCOLS
|
||||
All
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||
|
||||
/* only allow each connection to be reused for 30 seconds */
|
||||
curl_easy_setopt(curl, CURLOPT_MAXLIFETIME_CONN, 30L);
|
||||
|
||||
curl_easy_perform(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in libcurl 7.80.0
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_FORBID_REUSE "(3), "
|
||||
.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXAGE_CONN "(3), "
|
||||
|
|
@ -228,6 +228,7 @@ man_MANS = \
|
|||
CURLOPT_MAXCONNECTS.3 \
|
||||
CURLOPT_MAXFILESIZE.3 \
|
||||
CURLOPT_MAXFILESIZE_LARGE.3 \
|
||||
CURLOPT_MAXLIFETIME_CONN.3 \
|
||||
CURLOPT_MAXREDIRS.3 \
|
||||
CURLOPT_MAX_RECV_SPEED_LARGE.3 \
|
||||
CURLOPT_MAX_SEND_SPEED_LARGE.3 \
|
||||
|
|
|
|||
|
|
@ -499,6 +499,7 @@ CURLOPT_MAXAGE_CONN 7.65.0
|
|||
CURLOPT_MAXCONNECTS 7.7
|
||||
CURLOPT_MAXFILESIZE 7.10.8
|
||||
CURLOPT_MAXFILESIZE_LARGE 7.11.0
|
||||
CURLOPT_MAXLIFETIME_CONN 7.80.0
|
||||
CURLOPT_MAXREDIRS 7.5
|
||||
CURLOPT_MAX_RECV_SPEED_LARGE 7.15.5
|
||||
CURLOPT_MAX_SEND_SPEED_LARGE 7.15.5
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue