相关文章推荐

PHP的cURL函数中,有两个超时选项设置, CURLOPT_CONNECTTIMEOUT CURLOPT_TIMEOUT ,这篇文章简单说下这两个设置的区别。

CURLOPT_CONNECTTIMEOUT:连接对方主机时的最长等待时间,此设置限制的是建立连接过程的时间,其它过程的时间不在控制范围

CURLOPT_TIMEOUT:整个cURL函数执行过程的最长等待时间,也就是说,这个时间是包含连接等待时间的

因此,两者是包含和被包含关系, CURLOPT_CONNECTTIMEOUT CURLOPT_TIMEOUT 的其中一部分,当两者都有设置的时候, CURLOPT_TIMEOUT 的值应比 CURLOPT_CONNECTTIMEOUT 大。

我们使用一段代码来验证

// 使用谷歌官网的81端口来模拟连接超时 $url = 'https://www.google.com:81' ; // 第一种情况:仅设置CURLOPT_TIMEOUT $options = [ CURLOPT_URL = > $url , CURLOPT_RETURNTRANSFER = > true , CURLOPT_HEADER = > false , CURLOPT_TIMEOUT = > 3 , $ch = curl_init ( ) ; curl_setopt_array ( $ch , $options ) ; $content = curl_exec ( $ch ) ; $time = curl_getinfo ( $ch , CURLINFO_TOTAL_TIME ) ; curl_close ( $ch ) ; echo $time ; // 输出 2.958352 // 第二种情况:仅设置CURLOPT_CONNECTTIMEOUT $options = [ CURLOPT_URL = > $url , CURLOPT_RETURNTRANSFER = > true , CURLOPT_HEADER = > false , CURLOPT_CONNECTTIMEOUT = > 1 , $ch = curl_init ( ) ; curl_setopt_array ( $ch , $options ) ; $content = curl_exec ( $ch ) ; $time = curl_getinfo ( $ch , CURLINFO_TOTAL_TIME ) ; curl_close ( $ch ) ; echo $time ; // 输出 0.989237 // 第三种情况:同时设置CURLOPT_TIMEOUT和CURLOPT_CONNECTTIMEOUT $options = [ CURLOPT_URL = > $url , CURLOPT_RETURNTRANSFER = > true , CURLOPT_HEADER = > false , CURLOPT_CONNECTTIMEOUT = > 1 , CURLOPT_TIMEOUT = > 3 , $ch = curl_init ( ) ; curl_setopt_array ( $ch , $options ) ; $content = curl_exec ( $ch ) ; $time = curl_getinfo ( $ch , CURLINFO_TOTAL_TIME ) ; curl_close ( $ch ) ; echo $time ; // 输出 0.990142

通过代码验证,结果也符合前面说的结论。

https://stackoverflow.com/questions/27776129/php-curl-curlopt-connecttimeout-vs-curlopt-timeout

本文实例讲述了 php curl 超时设置方法。分享给大家供大家参考。具体实现方法如下: 访问HTTP方式很多,可以使用 curl , socket, file_get_contents() 等方法。 在访问http时,需要考虑超时的问题。 CURL 访问HTTP: CURL 是常用的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。 curl _set opt ($ch, opt ) 可以设置一些超时的设置,主要包括:    ① (重要) CURL OPT _ TIMEOUT 设置 cURL 允许执行的最长秒数。      ② (重要) CURL OPT _ TIMEOUT _MS 设置 cURL 允许执 PHP cURL 的超时设置有两个 CURL OPT _ CONNECT TIMEOUT CURL OPT _ TIMEOUT ,他们的 区别 是: CURL OPT _ CONNECT TIMEOUT 用来告诉 PHP 在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况。 CURL OPT _ TIMEOUT 用来告诉成功 PHP 从服务器接收缓冲完成前需要等待多长时间,如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。 使用 cURL .. 在 PHP 中使用 cURL 函数发送请求时,我们可以通过设置超时时间来控制请求的最大时间限制,以避免长时间等待服务器响应而阻塞 PHP 脚本。需要注意的是,超时时间不能设置得太短,否则可能导致请求未完成而被中断。的值应该根据实际情况而定,一般可以设置为 10 秒到 30 秒之间。函数来设置连接超时时间和请求超时时间的选项。的值建议设置为 5 秒左右,在上面的代码中,我们使用了。 CURL OPT _ TIMEOUT 是限制单个 cURL 扩展功能调用执行的最大时间量(以秒为单位)。 请注意,此设置的值应包括 CURL OPT _ CONNECT TIMEOUT 的值。 换句话说, CURL OPT _ CONNECT TIMEOUT 是由表示的时间段 CURL OPT _ TIMEOUT ,所以值 CURL OPT _ TIMEOUT 应比的值大 CURL OPT _ CONNECT T CURL OPT _ TIMEOUT 设置 cURL 允许执行的最长秒数 CURL OPT _ TIMEOUT _MS 设置 cURL 允许执行的最长毫秒数 CURL OPT _ CONNECT TIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待 CURL OPT _ CONNECT TIMEOUT _MS 尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待 CURL OPT _ TIMEOUT _MS 在 cURL 7.16.2中... PHP cURL 的超时设置有两个 CURL OPT _ CONNECT TIMEOUT CURL OPT _ TIMEOUT ,他们的 区别 是: CURL OPT _ CONNECT TIMEOUT 用来告诉 PHP 在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况。 CURL OPT _ TIMEOUT 用来告诉成功 PHP 从服务器接收缓冲完成前需要等... 对于一个 WEB 程序员来说,如果他对同步执行模式与异步执行模式不了解, 他往往会在对服务器发出一个操作语句(查询或读取一条记录等操作)后,立该引用服务器返回的执行结果,或者对该结果进行下一步操作,这是很危险的。对于一个简单的过程来说,这样不会存在什么大问题,但如果涉及到一个很复杂的操作过程,比如客户机上的后续语句是在该操作语句发 出后接着执行的,但由于各种原因,服务器不一定能执行完该操作语句,并 【HTTP访问】一般我们访问HTTP方式很多,主要是: curl , socket, file_get_contents() 等方法。如果碰到对方服务器一直没有响应的时候,我们就悲剧了,很容易把整个服务器搞死,所以在访问http的时候也需要考虑超时的问题。[ CURL 访问HTTP] CURL 是我们常用的一种比较靠谱的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。 CURL : curl ... $ch = curl _init(); curl _set opt ($ch, CURL OPT _RETURNTRANSFER, true); curl _set opt ($ch, CURL OPT _URL, $url); curl _set opt ($ch, CURL OPT _POSTFIELDS, $post); curl _set opt ($ch, CURL OPT _ TIMEOUT _MS, 200); //限制响应时间200
 
推荐文章