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、可以查看所有跳转链接,状态码、当你不知道一个链接需要跳转多少次,经过哪些跳转,这时候这个参数可以全部显示出来。
结束语
本文有任何错误,或有任何疑问,欢迎留言说明。
网友最新评论