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..