PHP curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false) trop lent
- Je utiliser cette méthode pour obtenir facebook api de données. juste une requête de recherche. mais je trouve que l'utilisation curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
coût de plus de temps lors d'une curl
temps (plus de 10 secondes).
Est-il d'autres curl
méthode peut courir plus vite?
NOTE: je suis en train de tester en 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:je ne veux pas utiliser un SDK
, parce que je l'ai pas mis SDK
en localhost test. Bien que j'ai lu de nombreux articles de façon à mettre en localhost. J'ai mis http://127.0.0.1/facebook
que mon url de callback. Mais tout a échoué. Donc, je veux encore pour obtenir un easy curl.
Grâce.
OriginalL'auteur cj333 | 2011-06-12
Vous devez vous connecter pour publier un commentaire.
Vous pourriez utiliser .crt fichier et vérifier à l'encontre de ce que, au lieu d'ignorer la vérification SSL, comme expliqué ici.
De conserver toutes les informations en un seul endroit: Dans votre code, vous devez écrire le code suivant:
Pour obtenir le certificat, vous devez aller avec le navigateur à la page, puis "afficher le certificat" vous devez l'exporter. N'oubliez pas que vous devez l'exporter en tant que X. 509 Certificate (PEM) pour que cela fonctionne. Pour un guide plus détaillé sur la façon d'exporter le certificat, veuillez consulter le lien fourni.
En fait, il devrait causer des ennuis si le certificat de changements de signe, c'est le point de l'ensemble d'une connexion SSL, pour éviter la posiblity de quelqu'un en remplaçant l'URL.
Je veux dire, quand Facebook remplace parce qu'il a expiré. Par exemple, le certificat aura été remplacé en décembre 2013.
Dans le lien, il explique comment obtenir le certificat de la partie supérieure de l'entité. Lorsque que l'on arrive à expiration, oui, il avait besoin d'être renouvelé. Pour ce faire, vous pourriez utiliser un cron qui est exécuté hebdomadaire ou mensuelle.
merci. pauvres facebook, un complexe processus d'installation.
OriginalL'auteur Lumbendil
Si ignorant de vérifier un certificat prend 10 secondes, le problème n'est pas avec le certificat ou avec la vérification et franchement, il n'est probablement pas avec le protocole SSL.
Ignorant pour vérifier le certificat doit être très rapide et ne pas être mesurables par rapport à combien de temps le reste de la négociation SSL procédure prend.
À suivre correctement le problème, je vous recommande d'utiliser la boucle de la ligne de commande de l'outil et de ses --trace-ascii et --trace en temps options pour voir ce que semble prendre du temps. Vous pouvez avoir besoin de snoop sur le réseau avec wireshark ou similaire pour obtenir une meilleure image de ce qui se passe.
Je ne vois pas comment les autres suggestions de ajoutant un certificat de vérification pour le mixage, faire quelque chose de plus rapide.
localhost
ou si passer à un vrai serveur s'exécute plus rapidement.Je suis la libcurl responsable et développeur en chef, j'ai fait ma part équitable de l'utilisation de curl dans de nombreux cas (mais pas en PHP) mais je n'ai jamais fait face à cette situation bizarre.
OriginalL'auteur Daniel Stenberg
Juste une note de côté, mais si vous voulez utiliser le SDK, vous pouvez contourner le problème local, par modification de votre fichier hosts et l'ajout de localhost.local pour 127.0.0.1. /etc/hosts sur une machine linux et C:\WINDOWS\system32\drivers\etc\hosts sur une machine windows.
Puis dans le Facebook des paramètres de l'application, il suffit de définir localhost.local que votre domaine et définir l'url de votre site en conséquence.
Vous devriez être prêt à aller ensuite.
OriginalL'auteur Eddie