Position actuelle: Accueil> Derniers articles> Curl_upkeed () Analyse des fonctions: une comparaison détaillée de la connexion chronophage lorsqu'elle est utilisée et non utilisée

Curl_upkeed () Analyse des fonctions: une comparaison détaillée de la connexion chronophage lorsqu'elle est utilisée et non utilisée

M66 2025-06-23

Dans PHP, Curl Extension est un outil très important qui vous permet d'échanger des données entre les clients et les serveurs. Nous utilisons généralement Curl pour envoyer des demandes HTTP ou obtenir des données du serveur. Cependant, lorsque plusieurs demandes sont faites, il devient particulièrement essentiel d'optimiser le temps d'établissement de la connexion.

La fonction curl_upkeed () est une fonction pour conserver et multiplexer les connexions HTTP, en particulier dans les demandes HTTP en double. Il peut éviter de rétablir la connexion à chaque fois qu'il demande, réduisant la latence causée par l'établissement de connexion, améliorant ainsi les performances. Cet article analysera une comparaison détaillée de la création de connexion longue lors de l'utilisation de curl_upkeep () et sans utiliser cette fonction.

Le rôle de curl_upkeed ()

CURL_UPKEEP () est une fonction personnalisée (ou une fonction implémentée via certaines bibliothèques) qui maintient une connexion persistante au serveur. Sa fonction principale est de réduire les frais généraux de l'établissement de connexions TCP à plusieurs reprises en persistant le pool de connexions, en particulier lorsqu'il est nécessaire d'envoyer les demandes au même serveur fréquemment, l'effet est particulièrement évident.

Comment mettre en œuvre des connexions persistantes?

En règle générale, le protocole HTTP est sans état, ce qui signifie qu'une nouvelle connexion TCP est établie pour chaque demande. Pour éviter de rétablir la connexion à chaque fois, nous pouvons définir certains paramètres pour garder la connexion persistante. Par exemple, Curl maintient la connexion active en définissant l'en-tête de connexion: Keep-Alive .

 $ch = curl_init();

// Définition de la connexion pour rester actif
curl_setopt($ch, CURLOPT_URL, 'https://m66.net/api/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Connection: keep-alive'
));

// Exécuter une demande
$response = curl_exec($ch);
curl_close($ch);

Le code ci-dessus maintiendra la connexion avec m66.net active, évitant de rétablir la connexion à chaque fois que vous le demandez.

Comparaison longue de l'utilisation et du non à l'utilisation de Curl_upkeed ()

Afin de mieux comprendre l'amélioration des performances apportée par curl_upkeep () , nous le comparerons avec quelques exemples pratiques ci-dessous.

Scénario 1: N'utilisez pas Curl_upkeed () (une nouvelle connexion est établie pour chaque demande)

Dans ce cas, chaque fois qu'une demande est envoyée, une connexion TCP doit être rétablie. Ce processus d'établissement de connexion implique généralement la résolution DNS, la poignée de main triple et d'autres opérations, ce qui prend donc beaucoup de temps.

 $ch = curl_init();

// N'utilisez pas de connexions persistantes,Rétablir la connexion à chaque fois que vous demandez
curl_setopt($ch, CURLOPT_URL, 'https://m66.net/api/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Exécuter une demande
$response = curl_exec($ch);
curl_close($ch);

Dans cet exemple, Curl crée une nouvelle connexion à chaque fois que Curl_exec () est appelé. Supposons que la résolution et l'établissement de connexion DNS prennent environ 200 ms.

Scénario 2: Utilisez curl_upkeep () (connexion multiple)

Dans ce cas, le pool de connexion est multiplexé, évitant de rétablir la connexion à chaque fois qu'il est demandé. Vous pouvez obtenir l'effet des connexions de multiplexage en définissant Curlopt_forbid_reuse et Curlopt_keep_sending . Il convient de noter que le maintien de la réutilisation de la connexion n'est valable que pour le même serveur, donc si vous accédez fréquemment à différents noms de domaine, l'effet sera considérablement réduit.

 $ch = curl_init();

// Réglage pour rester connecté
curl_setopt($ch, CURLOPT_URL, 'https://m66.net/api/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true); // Désactiver la réutilisation des connexions
curl_setopt($ch, CURLOPT_KEEP_SENDING, true); // Rester connecté

// Exécuter une demande
$response = curl_exec($ch);
curl_close($ch);

Dans le cas des connexions de multiplexage, si plusieurs demandes doivent être envoyées, la connexion sera multiplexée, enregistrant la résolution DNS, le tige à trois et autres processus, ce qui réduit considérablement le temps de chaque demande.

Comparaison longue

Nombre de demandes N'utilise pas curl_upkeep () (ms) Utilisez curl_upkeep () (ms)
1 200 ms 100 ms
10 2000 ms 1000 ms
100 20000 ms 10000 ms

Comme on peut le voir dans le tableau ci-dessus, après avoir utilisé Curl_upKeep () pour multiplexer la connexion, le temps consommé par chaque demande est considérablement réduit, en particulier lorsque le nombre de demandes augmente, l'avantage des connexions de multiplexage est plus évident.

Résumer

La fonction curl_upkeed () réduit considérablement les frais généraux de l'établissement de connexions fréquents en gardant et en multiplexant les connexions TCP, réduisant ainsi la latence et améliorant les performances. Surtout dans les scénarios où les demandes doivent être envoyées au même serveur plusieurs fois, l'effet est encore plus important.

Par conséquent, si vous communiquez fréquemment avec le même serveur dans un projet PHP, il est recommandé d'utiliser curl_upkeep () pour optimiser la gestion de la connexion et éviter le temps d'établissement de connexion inutile.