Maison  >  Article  >  développement back-end  >  Introduction à la fonction PHP — curl_multi_add_handle() : Ajouter un handle cURL à une session avec plusieurs handles

Introduction à la fonction PHP — curl_multi_add_handle() : Ajouter un handle cURL à une session avec plusieurs handles

PHPz
PHPzoriginal
2023-07-27 09:03:301162parcourir

Introduction à la fonction PHP—curl_multi_add_handle() : Ajouter un handle cURL à une session avec plusieurs handles

Dans le développement de requêtes réseau, la bibliothèque de fonctions curl en PHP est l'une des bibliothèques d'outils les plus couramment utilisées. Il fournit de nombreuses fonctions pour effectuer une variété de requêtes HTTP, notamment les requêtes GET et POST, la définition des en-têtes de requête, l'envoi et la réception de cookies, etc.

Lors de l'utilisation de la bibliothèque de fonctions curl, nous rencontrons souvent des situations où plusieurs requêtes sont envoyées en même temps. Si un handle cURL distinct est utilisé pour chaque requête, des ressources seront gaspillées. À l'heure actuelle, vous pouvez utiliser la fonction curl_multi_add_handle() fournie par PHP pour ajouter plusieurs handles cURL à une session à des fins de gestion. La syntaxe de la fonction

curl_multi_add_handle() est la suivante :

resource curl_multi_add_handle ( resource $mh , resource $ch )

Le paramètre $mh représente le handle de session cURL initialisé, et $ch représente le nouveau handle de session cURL à ajouter. Cette fonction ajoutera le handle $ch au handle $mh, renvoyant un handle multiple cURL.

Ce qui suit est un exemple de code utilisant la fonction curl_multi_add_handle() :

<?php
$mh = curl_multi_init();  // 初始化一个cURL会话句柄

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://www.example.com/api1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);  // 设置返回值不直接输出
curl_multi_add_handle($mh, $ch1);  // 将第一个cURL句柄添加到会话中

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://www.example.com/api2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);  // 将第二个cURL句柄添加到会话中

// 循环执行直到所有请求完成
do {
    $status = curl_multi_exec($mh, $running);
} while ($status === CURLM_CALL_MULTI_PERFORM || $running);

// 获取第一个请求的结果
$response1 = curl_multi_getcontent($ch1);
echo "Response 1: " . $response1 . "
";

// 获取第二个请求的结果
$response2 = curl_multi_getcontent($ch2);
echo "Response 2: " . $response2 . "
";

// 关闭会话句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>

Dans l'exemple de code ci-dessus, un handle de session cURL $mh est d'abord initialisé à l'aide de la fonction curl_multi_init(). Ensuite, deux descripteurs de session cURL indépendants $ch1 et $ch2 sont créés et l'URL demandée ainsi que d'autres options sont définies à l'aide de la fonction curl_setopt(). Ensuite, utilisez la fonction curl_multi_add_handle() pour ajouter $c1 et $c2 au handle de session $mh. Ensuite, utilisez la fonction curl_multi_exec() pour exécuter plusieurs requêtes en boucle jusqu'à ce que toutes les requêtes soient terminées. Enfin, utilisez la fonction curl_multi_getcontent() pour obtenir les résultats de chaque requête et afficher les résultats.

L'utilisation de la fonction curl_multi_add_handle() peut gérer efficacement les sessions de plusieurs handles cURL, améliorant ainsi l'efficacité des requêtes réseau et la maintenabilité du code. Dans le développement réel, nous pouvons également combiner d'autres fonctions telles que les fonctions curl_multi_remove_handle() et curl_multi_close() pour effectuer des tâches de requête réseau plus complexes.

Pour résumer, la fonction curl_multi_add_handle() est une fonction très utile qui peut ajouter plusieurs handles cURL à une session pour la gestion, améliorant ainsi l'efficacité des requêtes réseau et la maintenabilité du code. Dans le développement réel, nous pouvons utiliser cette fonction pour envoyer plusieurs requêtes réseau en même temps et traiter chaque requête selon les besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn