file_get_contents or curl in php?

99封情书 提交于 2019-11-29 10:22:21

First of all cURL has a lot of options to set. You can really set any option you need to - many supported protocols, file-uploads, cookies, proxies and more.

file_get_contents() really just GETs or POSTs the file and has the result.

However: I tried some APIs and did some "benchmarking":

cURL was a lot faster than file_get_contents
Just try it with your terminal: time php curl.php

curl.php:

<?php 
$ch = curl_init();
$options = [
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_URL            => 'http://api.local/all'
];

curl_setopt_array($ch, $options);
$data = json_decode(curl_exec($ch));
curl_close($ch);

fgc.php

<?php 
$data = json_decode(file_get_contents('http://api.local/all'));

Averaged cURL was 3-10 times faster than file_get_contents in my case. The api.local responeded with a cached JSON file - about 600kb.

I don't think it was coincidence - But that you can't measure this accurately, because the network and the response times differ a lot, based on their current load / network speed / response times etc. (local networks won't change the effect - there will be load & traffic too)

But for certain use cases, it could also be that file_get_contents is actually quicker.

Vigneshwar

Curl is faster then File_get_contents. I just did some quick bench-marking on this.

Fetching google.com using file_get_contents took (in seconds):

2.31319094 
2.30374217
2.21512604
3.30553889
2.30124092

CURL took:

0.68719101
0.64675593
0.64326 
0.81983113
0.63956594
Whatever Kitchen

For your information, curl can you let have more options and use GET/POST method and send parameters.

And file_get_contents will have lesser options for you to GET/POST parameters.

Hope this helps...

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!