2011-06-12 5 views
2

이 메서드를 사용하여 facebook API 데이터를 가져옵니다. 그냥 검색 쿼리. 하지만 curl 시간 (10 초 이상) 동안 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);의 사용 시간이 더 오래 걸립니다.

curl 다른 방법이 더 빠를 수 있습니까?

참고 : 지금은 로컬 호스트에

$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); 

PS를 테스트입니다 : 내가 로컬 호스트 테스트에 SDK을 설정 실패 becuase I는 SDK 사용하지 않습니다. localhost를 설정하는 방법에 대한 많은 기사를 읽었지만. 내 콜백 URL로 http://127.0.0.1/facebook을 설정했습니다. 그러나 실패했습니다. 그래서 저는 여전히 쉬운 컬 방식을 원합니다.

감사합니다.

답변

9

.crt 파일을 사용하여 SSL 확인을 무시하는 대신 as explained here을 확인할 수 있습니다.

한 곳에서 모든 정보를 유지하려면 : 당신의 코드에서 다음과 같은 작성해야 :

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)으로 내 보내야합니다. 인증서를 내보내는 방법에 대한 자세한 내용은 제공된 링크를 참조하십시오.

+0

인증서가 변경되면 문제가 발생하지 않습니까? – zneak

+0

실제로 인증서 기호가 변경되면 문제가 발생합니다. SSL 연결의 전체 지점이므로 URL을 대체하는 누군가의 위법성을 피할 수 있습니다. – Lumbendil

+0

페이스 북이 만료 되었기 때문에 페이스 북을 대체 할 때 말입니다.예를 들어, 현재 인증서가 2013 년 12 월으로 대체 될 것입니다. – zneak

0

참고로 SDK를 사용하려는 경우 호스트 파일을 편집하고 127.0.0.1에 localhost.local을 추가하여 로컬 문제를 해결할 수 있습니다. 리눅스 머신의/etc/hosts와 Windows 머신의 C : \ WINDOWS \ system32 \ drivers \ etc \ hosts.

Facebook 앱 설정에서 localhost.local을 도메인으로 설정하고 이에 따라 사이트 URL을 설정하기 만하면됩니다.

그러면 갈 준비가되어 있어야합니다.

2

인증서를 무시하고 확인하는 데 10 초가 걸리는 경우 문제가 인증서 또는 확인과 함께 발생하지 않고 매우 솔직하게 SSL을 사용하지 않았을 수 있습니다.

인증서를 확인하는 것을 무시하면 SSL 핸드 쉐이크 절차의 나머지 부분에 걸리는 시간보다 매우 빠르며 측정이 불가능합니다.

문제를 제대로 추적하려면 curl 명령 줄 도구와 해당 --trace-ascii--trace-time 옵션을 사용하여 시간이 걸릴 것으로 판단되는 것이 좋습니다. 당신은 무슨 일이 일어나고 있는지 더 좋은 그림을 얻기 위해 wireshark 또는 이와 유사한 네트워크를 스누핑해야 할 수도 있습니다.

다른 제안으로 을 추가하면 인증서를 확인하는 데 아무런 문제가 없습니다.

+0

직접 그래프 검색을 해 보셨습니까? 나는 천천히 퍼즐을하고있다. 나는 천천히'localhost'로 인한 것인지 또는 실제 서버로의 이동이 더 빨리 진행되는지 알지 못합니다. – cj333

+0

저는 libcurl 관리자이자 개발자입니다. 많은 상황에서 (PHP는 아니지만) 컬을 사용하는 데있어 공정한 분배를 해왔지만 결코 이상한 상황에 직면 해본 적이 없습니다. –

관련 문제