Je suis en train d'effectuer une requête curl sur une page. J'ai placé 'CURLOPT_TIMEOUT' (à 6 secondes) et 'CURLOPT_CONNECTTIMEOUT' (à 4 secondes) - et les deux fonctionnent parfaitement pour la plupart des URL. Cependant, lorsqu'une page Web ne répond pas (et provoque finalement CURL à travers une erreur «Impossible de résoudre l'hôte» (err_no 6)) - il semble que «CURLOPT_TIMEOUT» n'a aucun effet et curl attendra, peut-être indéfiniment ou jusqu'à expiration d'un autre délai.Comment puis-je modifier le délai d'attente php curl lorsque curl tente de résoudre l'hôte (curl err_no 6)
Avec l'URL que je suis en train d'accéder, CURL semble toujours prendre à peu près exactement 15 secondes avant qu'il ne retourne (qui n'a rien à voir avec le « CURLOPT_TIMEOUT » ou «CURLOPT_CONNECTTIMEOUT.
Quelqu'un peut dire moi comment je peux limiter la quantité de temps un CURL passe pour tenter de résoudre une foule
fantastiques! Je vais voir comment cela peut être fait, merci! –
Cela ne va pas être particulièrement facile, car DNS est une affaire synchrone qui bloque le processus. Il y a 'adns' (http://www.chiark.greenend.org.uk/~ian/adns/) - qui fournit des recherches asynchrones, c'est ancien mais fonctionnel. Probablement assez facile d'appeler dig ou nslookup en externe et de tuer le processus si cela prend trop de temps, mais cela introduit des frais généraux. Si vous pouvez utiliser pcntl_fork(), alors vous pouvez démarrer un nouveau thread pour le faire, ou utiliser pcntl_alarm() pour sortir du blocage tôt. – Orbling