wie man richtig verwenden Sie einen curl-handle
Will ich richtig wiederverwenden, curl-Griff, so dass es nicht mir Fehler und Funktion normalerweise.
Angenommen ich habe dieses Stück code:
CURL *curl;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0...");
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
curl_easy_perform(curl);
curl_easy_setopt(curl, CURLOPT_URL, "http://www.bbc.com");
curl_easy_perform(curl);
curl_easy_cleanup(curl);
curl_global_cleanup();
Wäre dies eine gute oder richtige Art der Verwertung ein curl-handle? Oder brauche ich curl_easy_reset()
auf, Griff?
Ich würde mich auch freuen, wenn jemand vorgeschlagen, was Sie vermeiden sollten dabei in Schwung. Vielleicht könnte jemand mir einen link zu einer bereits vorhandenen Quelle von Informationen?
InformationsquelleAutor der Frage user1494517 | 2013-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Umgebung libcurl auf die einfache und verständliche Schnittstelle, Sie müssen zuerst zu nennen :
curl_easy_init()
die init dem leichten Griff,curl_global_init()
meisten der Fall, das flag-option werdenCURL_GLOBAL_ALL
Jede der beiden Funktionen aufgerufen wird nur einmal am Anfang und müssen Ihr Gegenteil Aufräumen :
curl_easy_cleanup()
wenn Sie fertig sind Griffe, die Sie haben zu erklären,curl_global_cleanup()
wenn du fertig bist mit libcurl,Für bessere Ergebnisse überprüfen, Fehler so viel wie Sie können. Libcurl bietet
curl_easy_strerror()
Funktion. Es gibt einen string zurück Beschreibung der CURLcode Fehler. Auch einige Funktionen geben den Wert zurückCURL_OK oder eine bestimmte Ganzzahl, wenn alles OK ist.
Zum Beispiel, hier ist die richtige Art und Weise zu verwenden, CURLOPT_URL option :
Wenn Sie wiederverwenden möchten, dass handle für einen völlig anderen Zweck sollten Sie besser andere locken
einfache Griffe.
Immer noch dein code sollte funktionieren, aber ich würde verwenden verschiedene Griffe, weil es offensichtlich zwei getrennte Vorgänge.
Aber manchmal müssen Sie arbeiten mit dem gleichen Griff und wenn Sie nicht wollen, zu tun, setzen Sie es automatisch, verwenden Sie die entsprechende Funktion :
Beachten Sie, dass es sich nicht ändern live-verbindungen, die Sitzungs-ID-cache, DNS-cache, die cookies und Aktien aus dem Griff.
Ich habe es nicht versucht, aber mit dem code sollte es uns etwas geben wie :
Wenn Sie irgendein problem mit
Sleep
versuchen Sie, ersetzen Sie es durchsleep
oder_sleep
oder ersetzen 5000 durch 5.InformationsquelleAutor der Antwort borderless
Wenn ich die Frage verstehen Sie richtig würde gerne wissen, ob Sie können einen Anruf tätigen, um
curl_easy_perform()
und dann nur die änderung der url durchcurl_easy_setoption()
und dann einen zweiten Anruf? Dies sollte ohne Fehler funktionieren, da die Funktion nicht ändern, werden alle zuvor eingestellten Optionen für den Griff. Dies ist eine kurze Beispiel:Die Antwort ist keine seit
curl_easy_perform()
nicht zurücksetzen, werden alle Optionen, die Ihr code sollte in Ordnung sein und Sie können stick mit nur die änderung der url, wiecurl_easy_setoption(curl, CURLOPT_URL, <newurl>);
.InformationsquelleAutor der Antwort Cyclonecode
Du entweder zurücksetzen XOR bereinigen (vor dem zuweisen der Rückgabewert von
curl_easy_init()
wieder) - beides ist nicht gut. Für mehr info, siehe die Dokumentation.InformationsquelleAutor der Antwort