Which of file_get_contents
or curl
should be used in PHP to make an HTTP request?
If file_get_contents
will do the job, is there any need to use curl
? Using curl
seems to need more lines.
eg:
curl:
$ch = curl_init('http://www.website.com/myfile.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
curl_close ($ch);
file_get_contents:
$output = file_get_contents('http://www.website.com/myfile.php'.$content);
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.
So I built a simple function: https://git.io/J6s9e
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With