Maison  >  Article  >  développement back-end  >  Introduction à la fonction PHP — curl_multi_init() : initialiser une session cURL multiple

Introduction à la fonction PHP — curl_multi_init() : initialiser une session cURL multiple

王林
王林original
2023-07-24 12:40:47986parcourir

Introduction à la fonction PHP—curl_multi_init() : initialiser une session avec plusieurs cURL

Introduction :
En PHP, la fonction curl_multi_init() est utilisée pour initialiser une session avec plusieurs cURL et peut gérer plusieurs requêtes d'URL en même temps. Cette fonction crée un nouveau handle curl_multi et renvoie un handle de ressource. Dans cette session, nous pouvons ajouter plusieurs descripteurs cURL et les exécuter pour atteindre l'objectif de traiter plusieurs URL en même temps.

Syntaxe :
resource curl_multi_init(void)

Valeur de retour :
En cas de succès, renvoie le handle de session, en cas d'échec, renvoie FALSE.

Exemple de code : 
Ce qui suit est un exemple de code simple qui montre comment utiliser la fonction curl_multi_init() pour initialiser une session cURL multiple et gérer deux requêtes URL en même temps.

<?php
// 初始化会话
$mh = curl_multi_init();

// 创建URL列表
$urls = array(
    'http://www.example.com/url1',
    'http://www.example.com/url2'
);

// 创建cURL句柄并添加到会话
$handles = array();
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// 执行会话中的cURL句柄
$active = null;
do {
    $result = curl_multi_exec($mh, $active);
} while ($result == CURLM_CALL_MULTI_PERFORM || $active);

// 处理结果
foreach ($handles as $handle) {
    $response = curl_multi_getcontent($handle);
    // 处理响应数据
    echo $response;
    
    // 移除句柄和关闭cURL
    curl_multi_remove_handle($mh, $handle);
    curl_close($handle);
}

// 关闭会话
curl_multi_close($mh);
?>

Analyse :
Dans l'exemple de code ci-dessus, une session est d'abord initialisée à l'aide de la fonction curl_multi_init(), puis une liste d'URL est créée. Ensuite, une boucle foreach est utilisée pour parcourir la liste d'URL et plusieurs descripteurs cURL sont créés à l'aide de la fonction curl_init(). L'option CURLOPT_RETURNTRANSFER est définie pour que les données de réponse soient renvoyées. Utilisez ensuite la fonction curl_multi_add_handle() pour ajouter chaque handle à la session et enregistrez les handles dans le tableau $handles.

Après cela, utilisez la fonction curl_multi_exec() pour exécuter toutes les poignées simultanément dans la session. Obtenez la valeur de retour $result et le nombre de handles actifs $active, et déterminez si l'exécution doit continuer dans la boucle do-while.

Une fois la boucle terminée, utilisez la fonction curl_multi_getcontent() pour obtenir les données de réponse de chaque handle et les traiter. Utilisez ensuite la fonction curl_multi_remove_handle() pour supprimer le handle de la session et utilisez la fonction curl_close() pour fermer chaque handle cURL.

Enfin, utilisez la fonction curl_multi_close() pour fermer la session.

Résumé :
En utilisant la fonction curl_multi_init(), nous pouvons facilement initialiser une session multiple cURL et implémenter la fonction de traitement de plusieurs requêtes URL en même temps. Ceci est utile lorsque vous devez demander plusieurs API ou télécharger plusieurs fichiers en même temps. L'utilisation de la fonction curl_multi_init() peut améliorer l'efficacité et la vitesse de réponse du programme.

Ainsi, apprendre et maîtriser la fonction curl_multi_init() et d'autres fonctions cURL associées peuvent vous donner une compréhension et une application plus approfondies de la fonction de requête réseau de PHP.

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