PHP curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false)太慢了

cj3*_*333 2 php curl facebook

我使用这种方法来获取facebook api数据.只是一个搜索查询.但我发现curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);在一段curl时间内(超过10秒)使用会花费更多时间.

还有其他curl方法可以运行得更快吗?

注意:我现在正在localhost中测试

$url = "https://graph.facebook.com/search?access_token=".$token."&q=dallas&type=post&scope=publish_stream,offline_access,user_status,read_stream";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 2);
//curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__). '/file.crt'); the way as Lumbendil recommend, download a crt file via firefox. still slowly.
$body= curl_exec($ch);
curl_close ($ch);
Run Code Online (Sandbox Code Playgroud)

PS:我不想使用a SDK,因为我SDK在localhost测试中设置失败了.虽然我已经阅读了很多关于如何在localhost中设置的文章.我已设置http://127.0.0.1/facebook为我的回调网址.但是失败了.所以我仍然想要一个简单的卷曲方式.

谢谢.

Lum*_*dil 9

您可以使用.crt文件并对其进行验证,而不是忽略SSL验证,如此处所述.

要将所有信息保存在一个位置:在代码中,您应该编写以下内容:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/crt/file.crt');
Run Code Online (Sandbox Code Playgroud)

要获得证书,您应该使用浏览器访问该页面,然后使用"查看证书"您必须将其导出.请记住,您必须将其导出为X.509证书(PEM)才能生效.有关如何导出证书的更详细指南,请访问提供的链接.