J'utilise Cette classe à Faites-en une autre demande de message à un site Web (la première demande est de définir un cookie). Je passe dans une machine virtuelle Win XP avec VirtualBox, en utilisant WAMP de Wamserver Dot Com. Les 2 demandes prend de 10 à 18 secondes (avec curl), mais si je fais cette demande directement via le WebBrowser dans la même machine virtuelle, le site Web se charge en quelques secondes seulement et récupère toutes les images, CSS, etc. / p>
Qu'est-ce qui pourrait causer un courbe de travailler si lent? Y a-t-il un moyen de le réparer? p>
5 Réponses :
CURL essaye probablement d'inverser DNS le serveur et, comme cela ne peut pas, il suffit de suspendre un peu d'attente pour le délai d'attente. P>
Si le délai d'attente est donné par IPv6, vous pouvez essayer curl_ipresolve_v4 code> pour le contourner complètement. Cela dépend vraiment de votre configuration de la machine et est plus une question de défaut de serveur. P>
Toute façon de désactiver DNS inverse? J'ai essayé d'utiliser la propriété intellectuelle au lieu du domaine (le site Web charge bien à l'aide de la propriété intellectuelle) mais CURL prend toujours comme 14 secondes sur les 2 demandes.
Vous pouvez entrer l'adresse directement sur le fichier hosts code> ou vous pouvez essayer de forcer IPv4 et voir si cela fait toute différence.
J'ai utilisé Fsockopen et cela prend plus de 30 minutes. Devons-nous l'utiliser comme Fsockopen ('xxx.xxx.xxx.xxx', 80) au lieu de donner le nom de domaine là-bas ... et dans l'header Host: hostname.com .. N'est-ce pas? Quoi qu'il en soit, laissez-moi essayer le commentaire de Frankie.
@Jarkam mais de vos tests pouvez-vous voir si elle est liée ou non? Suivez les étapes simples et essayez d'éliminer les possibilités.
Vérifiez vos journaux de serveur Web et essayez de trouver toute différence entre les demandes du navigateur Web normal et des demandes de Curl P>
Vous voulez donc vérifier les en-têtes envoyés par le navigateur afin que l'utilisation des mêmes en-têtes de CURL rendrait le serveur Web à comprendre quelque chose de plus. Moi aussi eu le même problème. J'accède à un serveur via Firefox. Il charge plus vite. Mais quand j'ai utilisé fsockopen ("sitename.com") avec les mêmes en-têtes comme Firefox, il ne se charge pas rapidement. Il a fallu environ 30 secondes ou plus.
@Jayapal Chandran Il prend toujours plus de plus et si vous avez du temps, cela prendra toujours à la fois le même moment. C'est le délai d'attente DNS inverse, puis la réelle réponse du serveur (ce n'est pas vraiment significative comparant avec le délai d'attente).
Oh. En fait, c'était plus de 30 secondes comme 60. Quoi qu'il en soit. Ce que j'ai fait a été ajouté dans le fichier hosts et j'ai essayé la socket_create, socket_connect, socket_read, socket_write fonctionne en spécifiant l'adresse IP. Cela a fonctionné très plus vite. Ici, je me suis confus si c'est à cause de l'ajout de la propriété intellectuelle dans le fichier d'hosts ou de donner directement à l'adresse IP. J'ai vérifié en supprimant la propriété intellectuelle des hôtes et à nouveau avec Fsockopen. Cette fois, cela fonctionnait très vite. Cela n'est jamais arrivé auparavant. si totalement confus. Mais ça marche. Quel pourrait être l'effet?
Jayapal, j'utilisais Windows parce que je n'aime pas installer un serveur Web sur mon système d'exploitation principal et je n'ai eu qu'un serveur Web sur une machine virtuelle WinXP. Maintenant, j'ai installé un serveur Web sur une machine virtuelle Linux (BackTrack 4) et CURL fonctionne comme 8x fois plus rapidement. Si vous rencontrez ce problème sur Windows, vous devez essayer d'exécuter vos scripts sous Linux et comparer les résultats.
MISE À JOUR: Ajout d'en-têtes personnalisés sur CURL Emmenant exactement ce que Firefox envoie et que le temps de charge a diminué d'environ 50%.
Il est probablement dû à IPv6.
Essayez Ajouter P>
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
J'ai couru dans ce numéro avec un serveur Web local. J'ai pu réparer en ajoutant à Ceci est le Notation IPv6 pour 127.0.0.1 a> p> p> / etc / hosts / code> fichier. P>
J'ai fait face au même problème, à l'aide de la commande CURL. p>
comme suggéré ci-dessus - forcer IPv4 uniquement la recherche de DNS fixe. P>
(j'ai déjà eu curl -4 $ URL code> # sympa et rapide p>
:: 1 localhost code> dans mon fichier d'hôtes - mais cela n'a pas aidé). P>
Pourrait être que votre navigateur a mis en cache une partie des images, etc. Videz le cache de votre navigateur et essayez à nouveau le test ...
Essayé cela, se charge toujours plus rapidement que curl.