Bei der täglichen PHP-Entwicklung müssen Programmierer häufig mit anderen Servern interagieren, um Daten zu erhalten, z. B. API-Schnittstellen anzufordern, Remote-Inhalte abzurufen usw. Die Erweiterungsbibliothek cURL (Client URL) bietet leistungsstarke Tools zur Vereinfachung dieser Netzwerkkommunikationsvorgänge. Unter anderem wird die Funktion „curl_multi_getcontent()“ verwendet, um die Ergebnisse von cURL-Anfragen abzurufen, die im Multisitzungsmodus ausgeführt werden.
Die Hauptfunktion der Funktion „curl_multi_getcontent()“ besteht darin, den Rückgabeinhalt jeder Sitzung aus mehreren von „curl_multi_init()“ erstellten cURL-Sitzungen zu extrahieren. Wenn wir curl_multi_exec() verwenden, um mehrere Anforderungen gleichzeitig auszuführen, können wir diese Funktion aufrufen, um das Antwortergebnis jeder Anforderung zu erhalten. Die Verwendung ist sehr einfach. Übergeben Sie einfach das entsprechende cURL-Ressourcenhandle.
// InitialisierungcURLSitzung
$ch1 = curl_init('http://www.example.com/api1');
$ch2 = curl_init('http://www.example.com/api2');
// ein neues erstellencURLmehrere Griffe
$mh = curl_multi_init();
// 将两个Sitzung添加到mehrere Griffe中
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// 执行mehrere Griffe的cURLSitzung
do {
$status = curl_multi_exec($mh, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
// 循环获取每个Sitzung的内容
$contents = array();
foreach([$ch1, $ch2] as $ch) {
$content = curl_multi_getcontent($ch);
$contents[] = $content;
}
// 关闭mehrere Griffe的cURLSitzung
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
// Geben Sie den erhaltenen Inhalt aus
var_dump($contents);
Im obigen Beispiel werden zwei unabhängige cURL-Anfragen zunächst durch „curl_init()“ initialisiert und dann wird „curl_multi_init()“ verwendet, um ein Multisession-Handle zu erstellen und diesem die beiden Anfragen hinzuzufügen. Über die Funktion „curl_multi_exec()“ können mehrere Anfragen gleichzeitig ausgeführt werden.
Nach der Ausführung wird die Funktion „curl_multi_getcontent()“ verwendet, um den Antwortinhalt jeder Sitzung abzurufen und die Ergebnisse in einem Array zu speichern. Schließen Sie abschließend alle Sitzungen und geben Sie Ressourcen über „curl_multi_remove_handle()“ und „curl_multi_close()“ frei.
Bevor Sie curl_multi_getcontent() aufrufen, müssen Sie sicherstellen, dass die Zielsitzung die Ausführung abgeschlossen hat. Wenn diese Funktion aufgerufen wird, bevor die Anforderung abgeschlossen ist, kann es zu unvollständigen Inhalten oder Nullwerten kommen.
Die Funktion „curl_multi_getcontent()“ ist sehr nützlich bei der Verarbeitung gleichzeitiger Anfragen. Es kann Entwicklern dabei helfen, gleichzeitig Anfragen an mehrere APIs zu initiieren und Ergebnisse zu erzielen, wodurch die Effizienz der Netzwerkkommunikation erheblich verbessert wird. Es handelt sich um eine praktische Funktion, die es wert ist, in Szenarien wie der Erstellung hochgradig gleichzeitiger Schnittstellenaufrufe und der aggregierten Datenerfassung gemeistert zu werden.