Position actuelle: Accueil> Derniers articles> Comment utiliser curl_upkeep () dans un projet Crawler pour garder la connexion ouverte pendant longtemps?

Comment utiliser curl_upkeep () dans un projet Crawler pour garder la connexion ouverte pendant longtemps?

M66 2025-06-28

Les demandes HTTP sont des opérations très courantes dans les projets de chenilles. Si vous devez établir une nouvelle connexion à chaque fois tout en rampant une grande quantité de données, cela peut affecter l'efficacité, surtout si le site Web cible a une certaine limite de fréquence sur les demandes. Pour optimiser ce processus, il est particulièrement important de garder la connexion ouverte pendant longtemps. En PHP, nous pouvons utiliser la méthode curl_upkeep () pour maintenir la persistance de la connexion, évitant ainsi de nouvelles connexions fréquentes.

Qu'est-ce que curl_upkeep ()?

CURL_UPKEEP () est une fonction personnalisée qui est généralement utilisée pour empêcher la connexion de fermer lors de l'envoi de demandes HTTP via la bibliothèque Curl dans PHP. Lorsque vous utilisez curl_upkeep () , vous pouvez éviter de rétablir la connexion à chaque fois que vous envoyez une demande, ce qui peut améliorer les performances, en particulier lorsque les robots doivent envoyer des demandes en continu.

Dans PHP, lorsque vous utilisez Curl pour effectuer des demandes HTTP, vous rencontrez généralement la connexion par défaut en cours de fermeture. Pour éviter de rétablir la connexion à chaque fois que nous demandons, nous devons définir des paramètres pertinents pour maintenir la connexion active.

Exemple: comment utiliser curl_upkeep () pour une connexion persistante?

Voici un exemple montrant comment utiliser curl_upkeep () pour garder la connexion ouverte.

 <?php

function curl_upkeep($url)
{
    $ch = curl_init();

    // installationcURLOptions
    curl_setopt($ch, CURLOPT_URL, $url); // CibleURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Renvoie le contenu de réponse au lieu de la sortie directe
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Autoriser le saut automatique
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Connection: keep-alive",  // Rester connecté
        "Keep-Alive: 300",         // installation超时时间,Unités en quelques secondes
    ));
    
    // installation一个较长的超时,Évitez que la connexion soit fermée
    curl_setopt($ch, CURLOPT_TIMEOUT, 300); // installation请求超时时间为5minute

    // mettre en œuvrecURLDemander et obtenir les résultats
    $response = curl_exec($ch);

    if(curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
    }

    curl_close($ch);

    return $response;
}

// utilisercurl_upkeep()Faire une demande
$url = "https://m66.net/api/data"; // CibleURLRemplacer parm66.net
$response = curl_upkeep($url);
echo $response;

?>

Description du code:

  1. curl_init () : initialisez une session Curl.

  2. curl_setopt () : Définissez l'option Curl, où Curlopt_url spécifie l'URL cible, Curlopt_returntransfer fait que le contenu de réponse renvoie au lieu de la sortie directe, Curlopt_follocation signifie automatiquement après la redirection.

  3. Gardez la connexion : via la connexion: paramètres de conservation et d'en-tête de maintien et de conservation , spécifiez que la connexion reste active.

  4. Paramètre de délai d'expiration : utilisez le paramètre Curlopt_timeout pour définir un long délai pour éviter que la connexion soit fermée par le serveur.

Pourquoi avez-vous besoin de rester connecté?

Dans les projets de chenilles, l'établissement fréquent et la clôture des connexions augmentent les frais généraux inutiles et réduisent l'efficacité. En restant connecté, nous pouvons:

  • Améliorer les performances : réutiliser les connexions existantes sans avoir à établir de nouvelles connexions à chaque fois, en réduisant la latence.

  • Empêcher Banned : certains sites Web cibles peuvent limiter la fréquence d'accès à la même IP. En gardant la connexion, le nombre de connexions peut être réduit et le mécanisme anti-frawler peut être déclenché.

  • Économiser des ressources : l'établissement d'une connexion prend du temps et des ressources. Garder la connexion aide à enregistrer les ressources informatiques sur le serveur et le client.

Choses à noter

  • Timeout : il est très important de définir un délai d'expiration approprié. Si le délai d'attente est réglé trop longtemps, cela peut faire pendre la demande trop longtemps. D'une manière générale, il est recommandé de définir un délai d'expiration raisonnable en fonction des besoins réels.

  • Limites de connexion : certains serveurs peuvent avoir certaines restrictions sur les connexions persistantes (comme le nombre maximum de connexions), et vous devrez peut-être ajuster la configuration pertinente.

  • Prise en charge du serveur : tous les serveurs ne prennent pas en charge le respect de la connexion pendant longtemps. Lorsque vous utilisez Keep-Alive , assurez-vous de confirmer que le serveur Target prend en charge cette fonctionnalité.