PHP curl超时设置的时间单位是1秒吗?为什么我的程序显示的是7秒?

-

我分别设置curl的超时属性CURLOPT_CONNECTTIMEOUT为1、5、10,但是程序记录的curl执行的时间差分别为7秒、35秒、70秒。其他超时参数CURLOPT_TIMEOUT、CURLOPT_CONNECTTIMEOUT_MS、CURLOPT_TIMEOUT_MS,都是7倍的关系。这是怎么回事,时间单位不应该是1秒或者1毫秒吗?



附程序代码:

$startTime = time();


$ch = curl_init ();

$timeout = 1;

curl_setopt ( $ch, CURLOPT_URL, $url );

curl_setopt ( $ch, CURLOPT_POST, true );

curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );

$handles = curl_exec ( $ch );

curl_close ( $ch );


$endTime = time();


echo $endTime - $startTime;

PHP cURL PHP 开发

泻药

PHP CURL超时设置分两种,毫秒跟秒都是可以的。

curl普通秒级超时:

$ch = curl_init();      
 curl_setopt($ch, CURLOPT_URL,$url);       
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);       
 curl_setopt($ch, CURLOPT_TIMEOUT,60);   //只需要设置一个秒的数量就可以  
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);       
 curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']);


curl普通秒级超时使用:
curl_setopt($ch, CURLOPT_TIMEOUT,60);

curl如果需要进行毫秒超时,需要增加:
curl_easy_setopt(curl, CURLOPT_NOSIGNAL,1L);      
 //或者      
 curl_setopt ( $ch,  CURLOPT_NOSIGNAL,true);//支持毫秒级别超时设置

© COPYRIGHT BY i How And Why.com 2015