Home  >  Article  >  Backend Development  >  The difference between curl, fopen and file_get_contents

The difference between curl, fopen and file_get_contents

WBOY
WBOYOriginal
2016-07-29 09:15:231498browse

curl is mostly used to crawl Internet web pages, fopen is mostly used to read files, and file_get_contents is mostly used to obtain the content of static pages.

1. fopen /file_get_contents The DNS query will be re-done every time and the DNS information will not be cached. However, CURL will automatically cache DNS information. Requests for web pages or images under the same domain name only require one DNS query. This greatly reduces the number of DNS queries. So the performance of CURL is better than fopen /file_get_contents Much better.

2.fopen /file_get_contentsWhen requesting HTTP, http_fopen_wrapper will not keeplive . But curl can. In this way, curl will be more efficient when requesting multiple links multiple times.

3. Curl can simulate a variety of requests, such as POST data, form submission, etc. Users can customize requests according to their own needs. And fopen/file_get_contents can only use the get method to obtain data.


I discovered after studying that curl supports many protocols, including FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. In other words, it can do many things that file_get_content cannot do. Curl can achieve remote acquisition and collection of content in PHP; implement FTP upload and download of PHP web version; implement simulated login; implement interface docking (API), data transmission; implement simulated cookies; download file breakpoint resume transfer, etc., the function is very powerful .

After understanding some basic uses of curl, I found that it is not difficult. It is just a little difficult to remember some of the setting parameters, but we can just remember a few commonly used ones.

Enable curl:

Because PHP does not support the curl function by default, so if you want to use curl, you first need to enable this function in php.ini, that is, remove the semicolon in front of ;extension= php_curl.dll, and then save Then restart apache/iis and it will be fine.

<precourier new border-width:1px border-style:solid border-color:rgb rgb background-color:rgb padding:5px><span><?</span><span>php</span><span>  $curl </span><span>=</span><span> curl_init</span><span>();</span><span>//初始化一个cURL对象</span><span>  $url </span><span>=</span><span></span><span>"http://cart.jd.com/cart/cart.html?backurl=http://item.jd.com/176166.html&rid=0.9533184533      938766"</span><span>;</span><span>  $header </span><span>=</span><span> array</span><span>();</span><span>  $header</span><span>[]</span><span></span><span>=</span><span></span><span>'User-Agent: 5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-us)'</span><span>;</span><span>  $header</span><span>[]</span><span></span><span>=</span><span></span><span>'Accept: text/html,application/xhtml&#43;xml,application/xml;q=0.9,*/*;q=0.8'</span><span>;</span><span>  $header</span><span>[]=</span><span></span><span>'Accept-Encoding: gzip,deflate'</span><span>;</span><span>  $header</span><span>[]=</span><span></span><span>'//可以根据需要增加header内容'</span><span>;</span><span>  curl_setopt</span><span>(</span><span>$culr</span><span>,</span><span>CURLOPT_URL</span><span>,</span><span> $url</span><span>);</span><span>//设置你需要抓去的URL地址</span><span>  curl_setopt</span><span>(</span><span>$curl</span><span>,</span><span>CURLOPT_HEADER</span><span>,</span><span>$header </span><span>);</span><span>//设置header</span><span>  curl_setopt</span><span>(</span><span>$curl</span><span>,</span><span>CURLOPT_RETURNTRANSFER</span><span>,</span><span>1</span><span>);</span><span>//将结果返回输出到字符串</span><span>  $str </span><span>=</span><span> curl_exec</span><span>(</span><span>$curl</span><span>);运行</span><span>cURL</span><span>,请求网页</span><span>  curl_close</span><span>(</span><span>$curl</span><span>);</span><span>//关闭url请求</span><span></span><span>return</span><span> $str</span><span>;</span><span>//返回或者显示结果</span><span>?></span></precourier>


The above has introduced the differences between curl, fopen and file_get_contents, including the relevant aspects. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn