Dans le développement quotidien de PHP, les programmeurs ont souvent besoin d'interagir avec d'autres serveurs pour obtenir des données, comme demander des interfaces API, obtenir du contenu à distance, etc. La bibliothèque d'extensions cURL (Client URL) fournit un ensemble d'outils puissants pour simplifier ces opérations de communication réseau. Parmi elles, la fonction curl_multi_getcontent() permet d'obtenir les résultats des requêtes cURL exécutées en mode multi-session.
La fonction principale de la fonction curl_multi_getcontent() est d'extraire le contenu de retour de chaque session de plusieurs sessions cURL créées par curl_multi_init() . Lorsque nous utilisons curl_multi_exec() pour exécuter plusieurs requêtes en même temps, nous pouvons appeler cette fonction pour obtenir le résultat de la réponse de chaque requête. L'utilisation est très simple, il suffit de transmettre le handle de ressource cURL correspondant.
// initialisationcURLsession
$ch1 = curl_init('http://www.example.com/api1');
$ch2 = curl_init('http://www.example.com/api2');
// créer un nouveaucURLplusieurs poignées
$mh = curl_multi_init();
// 将两个session添加到plusieurs poignées中
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// 执行plusieurs poignées的cURLsession
do {
$status = curl_multi_exec($mh, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
// 循环获取每个session的内容
$contents = array();
foreach([$ch1, $ch2] as $ch) {
$content = curl_multi_getcontent($ch);
$contents[] = $content;
}
// 关闭plusieurs poignées的cURLsession
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
// Afficher le contenu obtenu
var_dump($contents);
Dans l'exemple ci-dessus, deux requêtes cURL indépendantes sont d'abord initialisées via curl_init() , puis curl_multi_init() est utilisé pour créer un handle multi-session et y ajouter les deux requêtes. Plusieurs requêtes peuvent être exécutées simultanément via la fonction curl_multi_exec() .
Après exécution, la fonction curl_multi_getcontent() est utilisée pour obtenir le contenu de la réponse de chaque session et enregistrer les résultats dans un tableau. Enfin, fermez toutes les sessions et libérez les ressources via curl_multi_remove_handle() et curl_multi_close() .
Avant d'appeler curl_multi_getcontent() , vous devez vous assurer que l'exécution de la session cible est terminée. Si cette fonction est appelée avant que la requête ne soit terminée, un contenu incomplet ou des valeurs nulles peuvent être obtenues.
La fonction curl_multi_getcontent() est très utile lors du traitement de requêtes simultanées. Il peut aider les développeurs à lancer des requêtes vers plusieurs API en même temps et à obtenir des résultats, améliorant ainsi considérablement l'efficacité de la communication réseau. Il s'agit d'une fonction pratique qui mérite d'être maîtrisée dans des scénarios tels que la création d'appels d'interface hautement simultanés et la capture de données agrégées.