Heim > Backend-Entwicklung > PHP-Tutorial > Einführung in PHP-Funktionen – curl_multi_exec(): cURL-Sitzungen mit mehreren Handles ausführen

Einführung in PHP-Funktionen – curl_multi_exec(): cURL-Sitzungen mit mehreren Handles ausführen

PHPz
Freigeben: 2023-07-25 06:04:02
Original
1123 Leute haben es durchsucht

PHP-Funktionseinführung – curl_multi_exec(): cURL-Sitzungen mit mehreren Handles ausführen

1 Einführung

cURL ist eine leistungsstarke Open-Source-Bibliothek für die Netzwerkkommunikation in PHP. Es unterstützt verschiedene Protokolle wie HTTP, HTTPS, FTP usw. und bietet viele funktionsreiche Optionen, die das Senden von Anfragen und das Erhalten von Antworten erleichtern.

In vielen Fällen müssen wir mehrere URL-Anfragen gleichzeitig verarbeiten, dann müssen wir die Funktion curl_multi_exec() verwenden. Mit dieser Funktion können wir mehrere cURL-Handles gleichzeitig ausführen und so die Effizienz von Anfragen verbessern. Dieser Artikel führt Sie ausführlich in die Verwendung der Funktion curl_multi_exec() ein und stellt entsprechende Codebeispiele bereit. curl_multi_exec()函数。该函数允许我们同时执行多个cURL句柄,从而提高请求的效率。本文将为大家详细介绍curl_multi_exec()函数的使用方法,并提供相应的代码示例。

2. 函数原型

int curl_multi_exec(resource $multi_handle, int &$still_running)

3. 参数说明

  • $multi_handle:cURL的多个句柄的资源,通过curl_multi_init()函数创建。
  • $still_running:一个变量,用于存储仍在运行的句柄数量。

4. 函数返回值

如果出现错误,curl_multi_exec()函数将返回一个错误码;否则,将返回0表示成功。

5. 示例代码

以下是一个使用curl_multi_exec()函数并发发送多个请求的示例代码:

<?php
// 创建cURL多个句柄
$multi_handle = curl_multi_init();

// 创建多个cURL会话并添加到多句柄中
$handles = array();
$handles[] = create_curl_handle("https://example.com/api1");
$handles[] = create_curl_handle("https://example.com/api2");
$handles[] = create_curl_handle("https://example.com/api3");

foreach ($handles as $handle) {
    curl_multi_add_handle($multi_handle, $handle);
}

// 执行多个cURL会话
$running = null;
do {
    curl_multi_exec($multi_handle, $running);
    curl_multi_select($multi_handle); // 等待I/O事件
} while ($running > 0);

// 获取每个请求的响应
foreach ($handles as $handle) {
    $response = curl_multi_getcontent($handle);
    // 处理响应数据
    echo $response;
    // 关闭cURL会话
    curl_multi_remove_handle($multi_handle, $handle);
    curl_close($handle);
}

// 关闭多个句柄
curl_multi_close($multi_handle);

// 创建一个cURL会话,并设置选项
function create_curl_handle($url) {
    $handle = curl_init();
    curl_setopt($handle, CURLOPT_URL, $url);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    return $handle;
}
?>
Nach dem Login kopieren

上述代码首先创建了一个cURL多句柄资源,并通过循环创建了多个cURL会话。接下来,将这些会话添加到多句柄中,并执行多个cURL会话。在每次执行时,调用curl_multi_select()函数等待I/O事件。最后,通过curl_multi_getcontent()函数获取每个请求的响应,并进行相应处理。

6. 注意事项

  • 在使用curl_multi_exec()函数之前,一定要先调用curl_multi_add_handle()将每个会话添加到多句柄中。
  • 在使用curl_multi_getcontent()函数获取响应数据之前,一定要确保请求已完成,即运行中的句柄数为0。
  • 使用curl_multi_remove_handle()函数从多句柄中移除会话,并使用curl_close()关闭会话。

7. 总结

curl_multi_exec()

2. Funktionsprototyp: Ressourcen mehrerer cURL-Handles werden über die Funktion curl_multi_init() erstellt.
  • $still_running: Eine Variable, die zum Speichern der Anzahl der noch laufenden Handles verwendet wird.
  • 🎜4. Rückgabewert der Funktion🎜🎜Wenn ein Fehler auftritt, gibt die Funktion curl_multi_exec() einen Fehlercode zurück, andernfalls gibt sie 0 zurück, um den Erfolg anzuzeigen. 🎜🎜5. Beispielcode🎜🎜Das Folgende ist ein Beispielcode, der die Funktion curl_multi_exec() verwendet, um mehrere Anfragen gleichzeitig zu senden: 🎜rrreee🎜Der obige Code erstellt zunächst eine cURL-Multi-Handle-Ressource und erstellt es durch eine Schleife Mehrere cURL-Sitzungen. Als nächstes fügen Sie diese Sitzungen zum Multihandle hinzu und führen mehrere cURL-Sitzungen aus. Bei jeder Ausführung wird die Funktion curl_multi_select() aufgerufen, um auf E/A-Ereignisse zu warten. Erhalten Sie schließlich die Antwort jeder Anfrage über die Funktion curl_multi_getcontent() und verarbeiten Sie sie entsprechend. 🎜🎜6. Hinweise🎜
    • Bevor Sie die Funktion curl_multi_exec() verwenden, rufen Sie unbedingt curl_multi_add_handle() auf, um jede Sitzung zum Multi-Handle hinzuzufügen Mitte.
    • Bevor Sie die Funktion curl_multi_getcontent() verwenden, um Antwortdaten abzurufen, stellen Sie sicher, dass die Anforderung abgeschlossen wurde, d. h. die Anzahl der ausgeführten Handles 0 ist.
    • Verwenden Sie die Funktion curl_multi_remove_handle(), um eine Sitzung aus einem Multi-Handle zu entfernen, und verwenden Sie curl_close(), um die Sitzung zu schließen.
    🎜7. Zusammenfassung🎜🎜curl_multi_exec()-Funktion ist eine sehr nützliche Funktion, die mehrere cURL-Sitzungen gleichzeitig ausführen kann, um die Anforderungseffizienz zu verbessern. Anhand des obigen Codebeispiels können wir verstehen, wie diese Funktion verwendet wird, um mehrere Anfragen gleichzeitig zu senden und die Antwortdaten für jede Anfrage zu erhalten. In der tatsächlichen Entwicklung können wir diesen Beispielcode entsprechend unseren eigenen Anforderungen weiter optimieren und erweitern. 🎜

    Das obige ist der detaillierte Inhalt vonEinführung in PHP-Funktionen – curl_multi_exec(): cURL-Sitzungen mit mehreren Handles ausführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage