Php 使用文件获取内容或卷曲

Php 使用文件获取内容或卷曲,php,curl,file-get-contents,Php,Curl,File Get Contents,我被要求使用一个简单的FacebookAPI来返回工作中喜欢或共享的数量,这些数量返回json字符串。 现在,由于我将对大量链接执行此操作,那么哪一个更好: 使用文件获取内容或卷曲 它们似乎返回相同的结果,而cURL的使用似乎更复杂,但它们之间的区别是什么。为什么大多数人推荐使用卷曲覆盖文件内容? 在运行可能需要一整天才能处理的api之前,我希望得到反馈。几年前,我对这两个api进行了基准测试,CURL速度更快。使用CURL,您可以创建一个CURL实例,它可以用于每个请求,并直接映射到非常快速的

我被要求使用一个简单的FacebookAPI来返回工作中喜欢或共享的数量,这些数量返回json字符串。 现在,由于我将对大量链接执行此操作,那么哪一个更好:

使用文件获取内容或卷曲

它们似乎返回相同的结果,而cURL的使用似乎更复杂,但它们之间的区别是什么。为什么大多数人推荐使用卷曲覆盖文件内容?
在运行可能需要一整天才能处理的api之前,我希望得到反馈。

几年前,我对这两个api进行了基准测试,CURL速度更快。使用CURL,您可以创建一个CURL实例,它可以用于每个请求,并直接映射到非常快速的libcurl库。使用file_get_内容,您可以为每个请求执行协议包装器和初始化代码的开销


我将挖掘出我的基准脚本并在PHP5.3上运行,但我怀疑CURL仍然会更快。

CURL比file\u get\u内容更广泛地支持https请求,而且它并不太复杂。虽然单行文件获取内容解决方案看起来很干净,但它的幕后开销比cURL大

$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$feedURL);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);

这就是我用来进行facebook api调用的方法,因为很多调用都需要access_令牌,facebook只接受安全连接中的access_令牌信息。我还注意到在执行时间上有很大的差异(cURL要快得多)。

我在5.3和5.4上对两者进行了基准测试,cURL仍然比
file\u get\u contents
快得多,特别是对于同一请求的多个调用(因此,基本上你所说的仍然代表5.3+)。我现在还用PHP5.5中的两台服务器对其进行了基准测试-curl的速度是这里可以找到的简单文件获取内容()脚本的3-10倍:我最近更改了一个脚本,以便它使用
curl\u exec
而不是等效数量的
文件获取内容来回收1000多个请求。结果快了3倍。我可以补充一点,因为我循环使用了curl句柄(call
curl\u init
一次),因此消除了为每个请求建立新连接的开销。curl似乎在可能的情况下使用HTTP Keep Alive,例如,当句柄被循环且主机名相同时。