PHP cURL: CURLOPT_CONNECTTIMEOUT vs CURLOPT_TIMEOUT
CURLOPT_CONNECTTIMEOUT is not a segment of the time represented by CURLOPT_TIMEOUT
If CURLOPT_CONNECTTIMEOUT is set to 3 seconds and CURLOPT_TIMEOUT to 4 seconds, execution may take up to 7 seconds.
I tested this by simulating slow server connecting (iptables drop).
CURLOPT_CONNECTTIMEOUT is the maximum amount of time in seconds that is allowed to make the connection to the server. It can be set to 0 to disable this limit, but this is inadvisable in a production environment.
CURLOPT_TIMEOUT is a maximum amount of time in seconds to which the execution of individual cURL extension function calls will be limited. Note that the value for this setting should include the value for CURLOPT_CONNECTTIMEOUT.
In other words, CURLOPT_CONNECTTIMEOUT is a segment of the time represented by CURLOPT_TIMEOUT, so the value of the CURLOPT_TIMEOUT should be greater than the value of the CURLOPT_CONNECTTIMEOUT.
From Difference between CURLOPT_CONNECTTIMEOUT and CURLOPT_TIMEOUT