php curl CURLOPT_RETURNTRANSFER 参数怎么用?

ixibei 发表于 分类:Php 阅读(3249) 评论(0)

简介:

php curl CURLOPT_RETURNTRANSFER较为官方的说法是:将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。对于新手来说可能有点难以理解,下面来看看个例子说明php curl CURLOPT_RET…

php curl CURLOPT_RETURNTRANSFER较为官方的说法是:将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。

对于新手来说可能有点难以理解,下面来看看个例子说明php curl CURLOPT_RETURNTRANSFER参数怎么用。

$url = 'http://www.sina.com.cn';
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0); 
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,20); 
curl_setopt ($ch,CURLOPT_FOLLOWLOCATION,true); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_HEADER,true); // header将在输出
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch); 
$content = curl_getinfo($ch);
curl_close($ch); 
//print_r($content);

返回的结果为:

HTTP/1.1 302 Moved Temporarily    
Server: nginx    
Date: Thu, 26 Dec 2019 03:34:43 GMT    
Content-Type: text/html    
Content-Length: 138    
Connection: keep-alive    
Location: https://www.sina.com.cn/    
X-Via-CDN: f=edge,s=ctc.wuhan.union.40.nb.sinaedge.com,c=183.160.48.10;    
X-Via-Edge: 15773312839710a30a0b781e3313a280b4a73   
 
HTTP/1.1 200 OK    
Server: edge-esnssl-1.17.3-14.3    
Date: Thu, 26 Dec 2019 03:34:43 GMT    
Content-Type: text/html    
Content-Length: 543375    
Connection: keep-alive    
Vary: Accept-Encoding    
ETag: "5e0429ee-7f77d"V=CCD0B746    
X-Powered-By: shci_v1.03    
Expires: Thu, 26 Dec 2019 03:35:28 GMT    
Cache-Control: max-age=60    
X-Via-SSL: ssl.23.sinag1.qxg.lb.sinanode.com    
Age: 16    
Via: https/1.1 ctc.guangzhou.union.180 (ApacheTrafficServer/6.2.1 [cRs f ]), https/1.1 ctc.wuhan.union.38 (ApacheTrafficServer/6.2.1 [cRs f ])    
X-Via-Edge: 15773312839960a30a0b781e3313a77c726aa    
X-Cache: HIT.38    
X-Via-CDN: f=edge,s=ctc.wuhan.edssl.43.nb.sinaedge.com,c=183.160.48.10;f=edge,s=ctc.wuhan.union.39.nb.sinaedge.com,c=58.49.227.43;f=Edge,s=ctc.wuhan.union.38,c=58.49.227.39

可以看到经过当头部信息跳转了两次,第一次状态吗是302临时重定向,第二次状态吗是200。这个原因是什么呢?实际上第一次访问的http://www.sina.com.cn是没有加https的,而新浪会自动跳转到https,所以会有两次请求。而CURLOPT_RETURNTRANSFER 设置的参数是0也就是false,解释成白话文就是:不以文件流形式返回,直接输出。

CURLOPT_RETURNTRANSFER 设置为0有这样几个用处。

1、不用打印返回结果了

2、可以直接看到请求头

3、可以查看所有跳转链接,状态码、当你不知道一个链接需要跳转多少次,经过哪些跳转,这时候这个参数可以全部显示出来。

结束语

本文有任何错误,或有任何疑问,欢迎留言说明。

本站文章除注明转载外,均为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。

http://www.onephper.com/archive/46.html

相关推荐

评论

回复给XXX取消回复

说点什么吧...

网友最新评论

输入关键字