在PHP中应该使用哪个file_get_contents
或curl
来发出HTTP请求?
如果file_get_contents
能够完成这项工作,是否需要使用curl
?使用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);
答案 0 :(得分:13)
首先, cURL 有很多要设置的选项。您可以真正设置所需的任何选项 - 许多支持的协议,文件上传,cookie,代理等。
file_get_contents()
实际上只是获取或发布文件并获得结果。
然而:我尝试了一些API并做了一些“基准测试”:
cURL 比file_get_contents
更快
只需在您的终端上试用: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'));
在我的情况下,平均cURL比file_get_contents
快3到10倍。 api.local 使用缓存的JSON文件重新发送 - 大约600kb。
我不认为这是巧合 - 但你无法准确衡量,因为网络和响应时间差异很大,基于他们当前的负载/网络速度/响应时间等。(本地网络赢了不会改变效果 - 也会有负载和流量)
但对于某些用例,也可能file_get_contents
实际上更快。
答案 1 :(得分:7)
Curl
比File_get_contents
快。我刚刚做了一些快速的基准测试。
使用 file_get_contents 获取google.com(以秒为单位):
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
CURL :
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
答案 2 :(得分:1)
为了您的信息,curl可以让您拥有更多选项并使用GET / POST方法并发送参数。
而file_get_contents
对于GET / POST参数的选项较少。
希望这会有所帮助......