curl默认长链接休眠时间

curl默认长链接休眠时间,第1张

curl默认长链接休眠时间是20s。根据查询相关公开信息显示:curl超时时间默认.20秒curl设置超时时间使用CURL时,有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间,故curl默认长链接休眠时间是20s。

<?php

/*

curl 多线程抓取

*/

/**

* curl 多线程

*

* @param array $array 并行网址

* @param int $timeout 超时时间

* @return array

*/

functionCurl_http($array,$timeout){

$res=array()

$mh= curl_multi_init()//创建多个curl语柄

$startime= getmicrotime()

foreach($arrayas$k=>$url){

$conn[$k]=curl_init($url)

curl_setopt($conn[$k], CURLOPT_TIMEOUT,$timeout)//设置超时时间

curl_setopt($conn[$k], CURLOPT_USERAGENT,'Mozilla/5.0 (compatibleMSIE 5.01Windows NT 5.0)')

curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7)//HTTp定向级别

curl_setopt($conn[$k], CURLOPT_HEADER, 0)//这里不要header,加块效率

curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1)// 302 redirect

curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1)

curl_multi_add_handle ($mh,$conn[$k])

}

//防止死循环耗死cpu 这段是根据网上的写法

do{

$mrc= curl_multi_exec($mh,$active)//当无数据,active=true

}while($mrc== CURLM_CALL_MULTI_PERFORM)//当正在接受数据时

while($activeand$mrc== CURLM_OK) {//当无数据时或请求暂停时,active=true

if(curl_multi_select($mh) != -1) {

do{

$mrc= curl_multi_exec($mh,$active)

}while($mrc== CURLM_CALL_MULTI_PERFORM)

}

}

foreach($arrayas$k=>$url) {

curl_error($conn[$k])

$res[$k]=curl_multi_getcontent($conn[$k])//获得返回信息

$header[$k]=curl_getinfo($conn[$k])//返回头信息

curl_close($conn[$k])//关闭语柄

curl_multi_remove_handle($mh,$conn[$k])//释放资源

}

curl_multi_close($mh)

$endtime= getmicrotime()

$diff_time=$endtime-$startime

returnarray('diff_time'=>$diff_time,

'return'=>$res,

'header'=>$header

)

}

//计算当前时间

functiongetmicrotime() {

list($usec,$sec) =explode(" ",microtime())

return((float)$usec+ (float)$sec)

}

//测试一下,curl 三个网址

$array=array(

" http://www.weibo.com/ ",

" http://www.renren.com/ ",

" http://www.qq.com/ "

)

$data= Curl_http($array,'10')//调用

var_dump($data)//输出

?>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7798692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存