PHP的cURL函数中,有两个超时选项设置,
CURLOPT_CONNECTTIMEOUT
和
CURLOPT_TIMEOUT
,这篇文章简单说下这两个设置的区别。
CURLOPT_CONNECTTIMEOUT:连接对方主机时的最长等待时间,此设置限制的是建立连接过程的时间,其它过程的时间不在控制范围
CURLOPT_TIMEOUT:整个cURL函数执行过程的最长等待时间,也就是说,这个时间是包含连接等待时间的
因此,两者是包含和被包含关系,
CURLOPT_CONNECTTIMEOUT
是
CURLOPT_TIMEOUT
的其中一部分,当两者都有设置的时候,
CURLOPT_TIMEOUT
的值应比
CURLOPT_CONNECTTIMEOUT
大。
我们使用一段代码来验证
$url
=
'https://www.google.com:81'
;
$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
;
$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
;
$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
;
通过代码验证,结果也符合前面说的结论。
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