PHP curl_setopt$ ch,CURLOPT_SSL_VERIFYPEER,false太慢

问题描述

| 我使用这种方法获取facebook api数据。只是一个搜索查询。但是我发现使用ѭ0会在ѭ1的时间内花费更多时间(超过10秒钟)。 还有其他的“ 1”方法可以运行得更快吗? 注意:我现在正在本地主机中测试
$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,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);
PS:我不想使用
SDK
,因为在localhost测试中设置
SDK
失败。尽管我读过许多有关如何在localhost中进行设置的文章。我已将“ 6”设置为我的回调网址。但是只是失败了。所以我仍然想要一种简单的卷曲方式。 谢谢。     

解决方法

        您可以使用.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\');
要获得证书,您应该将浏览器转到该页面,然后使用“查看证书”来导出它。请记住,您必须将其导出为X.509证书(PEM)才能起作用。有关如何导出证书的更详细的指南,请访问提供的链接。     ,        如果忽略检查证书需要10秒钟,则问题不在于证书或检查,而且坦率地说,可能根本不是SSL。 与其余SSL握手过程所花费的时间相比,忽略检查证书的速度应该非常快,并且不可测量。 为了正确地找出问题,我建议您使用curl命令行工具及其--trace-ascii和--trace-time选项来查看似乎需要花费时间。您可能需要使用Wireshark或类似工具监听网络,以更好地了解正在发生的事情。 我看不到将证书检查添加到组合中的其他建议如何使任何事情变得更快。     ,        只是附带说明,但如果您希望使用SDK,则可以通过编辑主机文件并为127.0.0.1添加localhost.local来解决本地问题。 linux机器上的/ etc / hosts和Windows机器上的C:\\ WINDOWS \\ system32 \\ drivers \\ etc \\ hosts。 然后在Facebook应用程序设置中,只需将localhost.local设置为您的域,并相应地设置您的站点URL。 那你应该准备好了。