PHP curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false) слишком медленный - PullRequest
2 голосов
/ 13 июня 2011

Я использую этот метод для получения данных API Facebook.просто поисковый запрос.но я считаю, что использование 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);

PS: я не хочу использовать SDK, потому что мне не удалось установить SDK в тесте localhost.Хотя я прочитал много статей о том, как установить в localhost.Я установил http://127.0.0.1/facebook в качестве URL обратного вызова.Но просто не удалось.Так что я все еще хочу найти легкий способ завиться.

Спасибо.

Ответы [ 3 ]

9 голосов
/ 13 июня 2011

Вы можете использовать файл .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) , чтобы это работало. Более подробное руководство по экспорту сертификата можно найти по приведенной ссылке.

2 голосов
/ 21 июня 2011

Если игнорирование проверки сертификата занимает 10 секунд, проблема не в сертификате или в проверке, и, честно говоря, это, скорее всего, не в SSL.

Игнорирование проверки сертификата должно быть очень быстрым и не поддающимся измерению по сравнению с тем, сколько времени занимает остальная часть процедуры рукопожатия SSL.

Чтобы правильно отследить проблему, я бы порекомендовал вам воспользоваться инструментом командной строки curl и его - trace-ascii и - trace-time , чтобы увидеть, что кажется занять время. Возможно, вам потребуется отследить сеть с помощью wireshark или чего-то подобного, чтобы получить еще лучшее представление о происходящем.

Я не вижу, как другие предложения по добавлению проверки сертификата к миксу сделают что-нибудь быстрее.

0 голосов
/ 20 июня 2011

Просто примечание, но если вы хотите использовать SDK, вы можете обойти локальную проблему, отредактировав файл hosts и добавив localhost.local для 127.0.0.1. / etc / hosts на компьютере с Linux и C: \ WINDOWS \ system32 \ drivers \ etc \ hosts на компьютере с Windows.

Затем в настройках приложения Facebook просто установите localhost.local в качестве домена и соответственно укажите URL своего сайта.

Ты должен быть готов к работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...