Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction curl_share_init () pour implémenter le partage de cache DNS et améliorer les performances de l'application PHP?

Comment utiliser la fonction curl_share_init () pour implémenter le partage de cache DNS et améliorer les performances de l'application PHP?

M66 2025-06-23

Dans PHP, Curl est un outil très puissant pour effectuer des demandes HTTP via URL. Il peut gérer les demandes GET, Post et de nombreuses autres opérations liées à HTTP. Cependant, les requêtes DNS sont souvent l'un des goulots d'étranglement des performances lors de la réalisation de plusieurs demandes HTTP, en particulier dans les demandes à haute fréquence. Pour éviter de réprimer le DNS pour chaque demande, PHP fournit une fonction Curl_share_Init () pour le partage de cache DNS, améliorant ainsi les performances des applications PHP.

Quelle est la fonction curl_share_init ()?

curl_share_init () est une fonction utilisée pour initialiser les ressources partagées. Les ressources partagées peuvent être utilisées pour partager des données entre plusieurs séances de boucle, en particulier les caches DNS. En partageant le cache DNS, plusieurs demandes de curl peuvent éviter les requêtes DNS en double, améliorant ainsi les performances des applications.

Signature de la fonction:

 resource curl_share_init ( void )

La fonction n'a pas de paramètres d'entrée et renvoie une poignée partagée Curl ( curl_share_handle ). Cette poignée partagée est utilisée pour partager des données mises en cache entre différentes sessions Curl.

Pourquoi utiliser le partage de cache DNS?

En l'absence d'un cache partagé, Curl effectue une requête DNS à chaque fois qu'elle demande, ce qui entraîne une augmentation de la latence. Surtout lorsque vous faites plusieurs demandes au même nom de domaine, la répétition des requêtes DNS peut perdre beaucoup de temps. En permettant le partage de cache DNS, la surcharge de la résolution DNS peut être considérablement réduite, augmentant ainsi la vitesse de réponse des applications PHP.

Comment implémenter le partage du cache DNS à l'aide de curl_share_init ()?

Étape 1: Initialisez la poignée partagée en boucle

Tout d'abord, Curl_share_Init () est appelé pour initialiser la ressource partagée.

 $share = curl_share_init();

Étape 2: Configurez la poignée partagée pour partager le cache DNS

Une fois la poignée de partage initialisée, utilisez curl_share_setopt () pour activer le partage de cache DNS. L'option Curlshopt_share spécifie le type de ressource à partager, tandis que curl_lock_data_dns est utilisé pour partager le cache DNS.

 curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);

Étape 3: Créez une session Curl et liez une poignée partagée

Ensuite, créez plusieurs sessions de boucle et liez les poignées partagées.

 $ch1 = curl_init('http://m66.net');
curl_setopt($ch1, CURLOPT_SHARE, $share);

$ch2 = curl_init('http://m66.net');
curl_setopt($ch2, CURLOPT_SHARE, $share);

Étape 4: Exécutez la demande de boucle

Après avoir configuré toutes les sessions Curl, vous pouvez exécuter des demandes séparément.

 curl_exec($ch1);
curl_exec($ch2);

Étape 5: Fermez la session Curl et partagez les ressources

Une fois la demande terminée, assurez-vous de fermer toutes les séances de boucle et les ressources partagées.

 curl_close($ch1);
curl_close($ch2);
curl_share_close($share);

Exemple de code

Voici un exemple complet qui montre comment implémenter le partage de cache DNS à l'aide de la fonction Curl_share_Init () :