Position actuelle: Accueil> Derniers articles> Comment utiliser curl_upkeep? Apprenez-vous à appeler correctement la fonction Curl_upkeept après Curl_Multi_Add_Handle ()

Comment utiliser curl_upkeep? Apprenez-vous à appeler correctement la fonction Curl_upkeept après Curl_Multi_Add_Handle ()

M66 2025-06-23

Lorsque vous utilisez la bibliothèque CURL pour les demandes multithread en PHP, la fonction Curl_Multi_Add_Handle () est une étape clé, qui vous permet d'ajouter plusieurs poignées Curl à une poignée multiplexée Curl. Cependant, lorsque vous exécutez des demandes multithread, vous pouvez rencontrer des situations où vous devez gérer et maintenir correctement les poignées multiplexées. Dans ce cas, la fonction curl_upkeed () est très utile. Il peut garantir que plusieurs demandes simultanées restent actives après avoir appelé CURL_MULTI_ADD_HANDLE () et peuvent nettoyer les demandes non valides en temps opportun.

Cet article introduira en détail comment appeler correctement la fonction curl_upkeep () après avoir utilisé CURL_MULTI_ADD_HANDLE () et assurer l'exécution fluide des demandes multithreads Curl.

1. Quelle est la fonction curl_multi_add_handle () ?

La fonction Curl_Multi_Add_Handle () est une fonction de PHP qui ajoute plusieurs poignées Curl aux poignées multiplexées. Il vous permet de faire plusieurs demandes HTTP simultanément sans avoir à créer de nouvelles sessions Curl pour chaque demande séparément. Après avoir appelé cette fonction, vous pouvez l'exécuter via curl_multi_exec () et attendre que toutes les demandes se terminent.

Par exemple, ce qui suit est un exemple d'une simple demande de boucle multithread:

 $mh = curl_multi_init(); // Initialiser une poignée multiplexée

// Créer plusieurscURLPoignée
$ch1 = curl_init('http://m66.net/api/data1');
$ch2 = curl_init('http://m66.net/api/data2');
$ch3 = curl_init('http://m66.net/api/data3');

// 将Poignée添加到多路复用Poignée中
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
curl_multi_add_handle($mh, $ch3);

2. Le rôle de curl_upkeed ()

La fonction de la fonction curl_upkeed () est de s'assurer que dans la poignée multiplexée, toutes les demandes peuvent rester actives et gérer les demandes qui ne sont plus nécessaires en temps opportun. Il nous aide à nettoyer les demandes qui ont été complétées ou échouées, garantissant que les ressources du système peuvent être recyclées dans le temps, évitant ainsi la consommation de mémoire inutile.

3. Comment appeler curl_upkeep () après curl_multi_add_handle ()

Après avoir ajouté plusieurs poignées Curl à des poignées multiplexées, nous devons appeler périodiquement Curl_upkeep () pour gérer le cycle de vie de ces poignées. Les étapes spécifiques sont les suivantes:

  1. Appelez CURL_MULTI_EXEC () pour démarrer la demande.

  2. Utilisez curl_upkeep () pour maintenir l'état actif de la session Curl.

  3. Une fois toutes les demandes terminées, retirez la poignée terminée.

Voici un exemple spécifique:

 $mh = curl_multi_init(); // 初始化多路复用Poignée

// Créer plusieurscURLPoignée
$ch1 = curl_init('http://m66.net/api/data1');
$ch2 = curl_init('http://m66.net/api/data2');
$ch3 = curl_init('http://m66.net/api/data3');

// 将Poignée添加到多路复用Poignée中
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
curl_multi_add_handle($mh, $ch3);

// Exécuter une demande
$running = null;
do {
    curl_multi_exec($mh, $running);  // Exécuter une demande
    curl_upkeep($mh);  // 维护多路复用Poignée
} while ($running);

// Obtenez les résultats de chaque demande
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);
$response3 = curl_multi_getcontent($ch3);

// 关闭Poignée
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_remove_handle($mh, $ch3);

// 关闭多路复用Poignée
curl_multi_close($mh);

4. Pourquoi utiliser curl_upkeep () ?

Lorsque vous utilisez curl_multi_exec () pour exécuter des demandes simultanées, nous ne pouvons garantir que toutes les demandes peuvent être remplies lors de la première exécution. Parfois, certaines demandes peuvent prendre plus de temps. CURL_UPKEEP () peut nettoyer périodiquement les poignées de demande terminées pour empêcher ces poignées de consommer des ressources inutiles. De plus, Curl_upkeep () garantit également que le programme peut être exécuté efficacement même dans les demandes occupées.

5. Conclusion

curl_upkeep () est un outil très important lorsque vous utilisez curl_multi_add_handle () pour gérer plusieurs demandes simultanées dans PHP. Il nous aide à gérer les poignées multiplexées et à nettoyer les demandes non valides en temps opportun, garantissant ainsi une exécution efficace des demandes et une utilisation rationnelle des ressources. En utilisant rationnellement curl_upkeep () , vous pouvez rendre les demandes simultanées dans PHP plus stables et fiables.