php curl超时设置详解 本文介绍下,在php中使用curl时,进行超时设置的详细方法,大家参考下,希望对大家有一定的帮助.
访问HTTP方式很多,可以使用curl, socket, file_get_contents() 等方法。
在访问http时,需要考虑超时的问题。
一、CURL 访问HTTP
CURL 是常用的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。
curl_setopt($ch, opt) 可以设置一些超时的设置,主要包括:
*(重要) CURLOPT_TIMEOUT 设置cURL允许执行的最长秒数。
*(重要) CURLOPT_TIMEOUT_MS 设置cURL允许执行的最长毫秒数。
(在cURL 7.16.2中被加入。从PHP 5.2.3起可使用)
CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待。
CURLOPT_CONNECTTIMEOUT_MS 尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待。 (在cURL 7.16.2中被加入。从PHP 5.2.3开始可用) CURLOPT_DNS_CACHE_TIMEOUT 设置在内存中保存DNS信息的时间,默认为120秒。
1,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']);
2,curl普通秒级超时使用:
curl_setopt($ch, CURLOPT_TIMEOUT,60);
3,curl如果需要进行毫秒超时,需要增加:
curl_easy_setopt(curl, CURLOPT_NOSIGNAL,1L);
curl_setopt ( $ch, CURLOPT_NOSIGNAL,true);//支持毫秒级别超时设置
public function spider($url){
$ch =
curl
_init(); //
Curl
初始化
$timeout = 30; //
超时
时间:30s
$ip="192.168.1.101";
$ua='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'; // 伪造抓取 UA
curl
_setopt($ch,
CURL
OPT_URL, $url); //
设置
Curl
目标
curl
_setopt($ch,
CURL
OPT_RETURNTRANSFER, 1); //
Curl
请求有返回的值
curl
_setopt($ch,
CURL
OPT_CONNECTTIMEOUT, $timeout); //
设置
抓取
超时
时间
curl
_setopt($ch,
CURL
OPT_FOLLOWLOCATION, 1); // 跟踪重定向
curl
_setopt($ch,
CURL
OPT_ENCODING, ""); //
设置
编码
curl
_setopt($ch,
CURL
OPT_REFERER, $url); // 伪造来源网址
curl
_setopt($ch,
CURL
OPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$ip, 'CLIENT-IP:'.$ip)); //伪造IP
curl
_setopt($ch,
CURL
OPT_USERAGENT, $ua); // 伪造ua
curl
_setopt($ch,
CURL
OPT_ENCODING, 'gzip'); // 取消gzip压缩
curl
_setopt($ch,
CURL
OPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl
_setopt($ch,
CURL
OPT_SSL_VERIFYHOST, FALSE);
$content =
curl
_exec($ch);
curl
_close($ch); // 结束
Curl
return $content; // 函数返回内容
PHP
cURL
的
超时
设置
有两个
CURL
OPT_CONNECTTIMEOUT 和
CURL
OPT_TIMEOUT,他们的区别是:
CURL
OPT_CONNECTTIMEOUT用来告诉
PHP
在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况。
CURL
OPT_TIMEOUT用来告诉成功
PHP
从服务器接收缓冲完成前需要等待多长时间,如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
使用
cURL
..
这其中有一个怪癖可能与某些人有关。。。从
PHP
文档注释。如果希望
cURL
在一秒钟内
超时
,可以使用
CURL
OPT_TIMEOUT_MS,尽管“类Unix系统”上有一个bug/“功能”,如果值为<1000 ms,则lib
curl
会立即
超时
,并出现错误“
cURL
error(28):timeout was reach”。这种行为的解释是:如果lib
curl
是为使用标准的系统名解析程序而构建的,则传...
curl
介绍
curl
是一个开源的网络链接库,支持http, https, ftp, gopher, telnet, dict, file, and ldap 协议。之前均益介绍了python版本的py
curl
http://junyiseo.com/python/607.html,现在介绍怎么使用
php
版本的URL.
curl
get请求
function
curl
_get($url){ $header = array( 'Accept: application/json', ); $cur...
【HTTP访问】一般我们访问HTTP方式很多,主要是:
curl
, socket, file_get_contents() 等方法。如果碰到对方服务器一直没有响应的时候,我们就悲剧了,很容易把整个服务器搞死,所以在访问http的时候也需要考虑
超时
的问题。[
CURL
访问HTTP]
CURL
是我们常用的一种比较靠谱的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。
CURL
:
curl
...
本文实例讲述了
php
中
curl
超时
设置
方法。分享给大家供大家参考。具体实现方法如下:
访问HTTP方式很多,可以使用
curl
, socket, file_get_contents() 等方法。
在访问http时,需要考虑
超时
的问题。
CURL
访问HTTP:
CURL
是常用的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。
curl
_setopt($ch, opt) 可以
设置
一些
超时
的
设置
,主要包括:
① (重要)
CURL
OPT_TIMEOUT
设置
cURL
允许执行的最长秒数。
② (重要)
CURL
OPT_TIMEOUT_MS
设置
cURL
允许执
curl
请求的时候 如果用post请求,传递参数为 数组的时候 header 头 会被
设置
为multipart/form-data 如果是字符串 形式header 头会被
设置
为application/x-www-urlencode在使用数组传值时,
php
://input是接收不到数据的今天项目中有个问题出现 ,a网站调用b网站 b网站调用远程c网站。在
curl
返回值中一直出现
超时
现象 ,c...
本文介绍下,在
php
中使用
curl
时,进行
超时
设置
的详细方法,大家参考下,希望对大家有一定的帮助。访问HTTP方式很多,可以使用
curl
, socket, file_get_contents() 等方法。在访问http时,需要考虑
超时
的问题。一、
CURL
访问HTTP
CURL
是常用的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。
curl
_setopt($ch, opt) 可以...
本文实例讲述了
php
中
curl
超时
设置
方法。分享给大家供大家参考。具体实现方法如下:访问HTTP方式很多,可以使用
curl
, socket, file_get_contents() 等方法。在访问http时,需要考虑
超时
的问题。
CURL
访问HTTP:
CURL
是常用的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。
curl
_setopt($ch, opt) 可以
设置
一些
超时
的
设置
...
Simon East..30这有一个怪癖可能与某些人有关......来自
PHP
文档的评论.如果你想卷曲在不到一秒钟的
超时
时间,你可以使用
CURL
OPT_TIMEOUT_MS,虽然对"类Unix系统"的错误/"特性"导致的lib
curl
与错误"卷曲立即
超时
如果值为<1000毫秒错误(28):达到
超时
".这种行为的解释是:"如果lib
curl
构建为使用标准系统名称解析器,那么传输的那部分仍将使用...
问题描述一个项目需要抓取一些网页数据,使用的是
php
中的
curl
扩展,模拟浏览器行为,通过http协议请求web数据。今天收到了短信报警,爬虫任务队列(redis队列)堆积,于是登录到线上服务器紧急排查问题,发现有大量的进程“僵死”,导致任务处理缓慢。我们的服务使用的是
php
多进程方式,master进程用于管理控制,worker进程用于实际任务处理,为避免内存泄漏,worker进程每处理1000条...
function _
curl
($url, $data="", $type="POST", $options=null){
if(empty($url)){
return false;
$type = in_array(strtoupper($type), ['POST','GET','PUT','PATCH','DELETE']) ? $type : "POST";
$connect_timeout =...
本文实例讲述了
php
使用
curl
并发减少后端访问时间的方法。分享给大家供大家参考,具体如下:在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用
curl
进行访问的时候,一般都是单个、顺序访问,假如有3个接口,每个接口耗时500毫 秒那么我们三个接口就要花费1500毫秒了,这个问题太头疼了严重影响了页面访问速度,有没有可能并发访问来提高速度呢?今天就简单的说一下,利用
curl
并发来提高页面...
curl
_close($ch);
//$no错误码7为连接不上,28为连接上了但请求返回结果
超时
if(in_array(intval($no), [7, 28], true)) {
return false;// 或者抛出异常自行捕获throw new Exception("请求
超时
");
curl
_close($ch..