Curlopt_returntransfer ist eine Option in der Curl -Bibliothek und wird normalerweise verwendet, um die Rückgabemethode von Curl -Anforderungen festzulegen. Wenn diese Option auf True gesetzt ist, wird das Ergebnis der Curl -Anforderung nicht direkt an den Browser oder die Konsole ausgegeben, sondern als Zeichenfolge zurückgegeben. Auf diese Weise können Entwickler die zurückgegebenen Daten über den PHP -Code erfassen und weiter verarbeiten, anstatt den Curl direkt anzuzeigen.
Grundnutzung:
<span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span></span>
Wenn Sie curl_multi_exec verwenden, um mehrere Curl -Anforderungen auszuführen, müssen Sie normalerweise bestimmte Optionen für jede Anforderung festlegen. Zu diesem Zeitpunkt können Sie Optionen für jede Curl -Sitzung über curl_multi_setopt , einschließlich curlopt_returntransfer , festlegen.
<span><span><span class="hljs-comment">// Multiple initialisieren cURL Sitzung</span></span><span>
</span><span><span class="hljs-variable">$ch1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-string">"http://example.com"</span></span><span>);
</span><span><span class="hljs-variable">$ch2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-string">"http://example.org"</span></span><span>);
</span><span><span class="hljs-comment">// Einstellungsoptionen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Multithreading initialisieren cURL Sitzung</span></span><span>
</span><span><span class="hljs-variable">$mh</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_init</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// Eine Anfrage ausführen</span></span><span>
</span><span><span class="hljs-variable">$running</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-keyword">do</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">curl_multi_exec</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$running</span></span><span>);
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$running</span></span><span>);
</span><span><span class="hljs-comment">// Ergebnisse erhalten</span></span><span>
</span><span><span class="hljs-variable">$response1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-variable">$response2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// Ausgangsergebnis</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response2</span></span><span>;
</span><span><span class="hljs-comment">// Schließung cURL Sitzung</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_close</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span></span>
In diesem Beispiel setzen wir Curlopt_ReturnTransfer für jede Curl -Sitzung auf true , damit die Antwortdaten für jede Anforderung als Zeichenfolge zurückgegeben werden, anstatt direkt an den Browser oder die Konsole auszugeben. Auf diese Weise können Sie den Antwortinhalt jeder Anforderung bei der Bearbeitung mehrerer Anforderungen erfassen.
Die Funktion von curlopt_returntransfer besteht darin, das Ausgangsverhalten von Curl -Anforderungen zu steuern:
Auf True gesetzt: Der zurückgegebene Inhalt wird als Zeichenfolge zurückgegeben, und der Entwickler kann den zurückgegebenen Inhalt weiter verarbeiten (wie Parsen, Speichern, Ausgabe usw.). Dies ist in den meisten Fällen die empfohlene Einstellung, insbesondere wenn Sie mehrere Anfragen ausführen, die Ergebnisse jeder Anfrage verarbeiten.
Auf false eingestellt: Die Curl -Anforderung gibt den Inhalt direkt in den Browser oder die Konsole aus. Zu diesem Zeitpunkt können Sie die Antwortergebnisse in Ihrem Code nicht direkt erfassen, normalerweise bei der Verwendung einiger einfacher GET -Anforderungen oder Herunterladen von Dateien.
Jeder Curl -Handle muss festgelegt werden: Bei Verwendung von curl_multi_setopt , um mehrere Anforderungen zu verarbeiten, muss jedes einzelne Curl -Handle auf curlopt_returntransfer eingestellt werden. Diese Option ist für einige Anfragen festgelegt, auch wenn sie keinen Inhalt zurückgeben müssen.
Verarbeitung von Antwortinhalt: In Multi-Thread-Anforderungen müssen Sie normalerweise den Antwortinhalt jeder Anforderung über curl_multi_getContent () abrufen, nachdem alle Anforderungen ausgeführt wurden. Stellen Sie sicher, dass die Rückgabergebnisse jeder Curl -Sitzung nach Abschluss der Anfrage verarbeitet werden.
Debugging: Wenn Sie feststellen, dass einige der zurückgegebenen Inhalte in der Multi-Thread-Anfrage nicht den Erwartungen entsprechen, können Sie Curlopt_Returntransfer vorübergehend auf False festlegen, um zu beobachten, ob es sich um eine Ausnahme handelt, die durch Curl-Konfigurationsprobleme verursacht wird.
Reaktionsdaten für mehrere APIs erhalten: Das Einrichten mehrerer API -Anforderungen und die gleichzeitige Ausführung kann die Effizienz erheblich verbessern. Curlopt_Returntransfer wird verwendet, um die Antwort jeder Anforderung zu erfassen und eine weitere Verarbeitung durchzuführen.
Batch -Download -Datei: Beim Herunterladen von Dateien in Stapeln können Sie Curlopt_ReturnTransfer verwenden, um den Dateiinhalt als Zeichenfolge oder Binärstrom zurückzugeben, um eine direkte Ausgabe an den Browser zu vermeiden und anschließende Speichervorgänge zu erleichtern.
CRAWLER: Für Crawler, die mehrere Webseiten gleichzeitig kriechen müssen, ist Curlopt_Returntransfer eine sehr wichtige Konfiguration, mit der Sie den HTML -Inhalt jeder Anfrage erfassen, analysieren und speichern.
Das ordnungsgemäße Einstellen des Parameters curlopt_returntransfer ist für den reibungslosen Fortschritt von Multi-Thread-Curl-Anfragen von entscheidender Bedeutung. Indem Sie diesen Parameter auf True festlegen, können Sie den Antwortinhalt jeder Anforderung effektiv erfassen, im Programm weiter verarbeiten oder speichern. Stellen Sie bei der Verwendung von curl_multi_setopt sicher, dass diese Option für jeden Curl -Handle für eine effiziente Datenverarbeitung korrekt eingestellt ist.
Wenn Sie diese Optionen in der tatsächlichen Entwicklung verstehen und flexibel anwenden, können Sie bei gleichzeitigen Anforderungen eine bessere Leistung und Kontrolle erzielen.