Maison >développement back-end >tutoriel php >Comment puis-je récupérer uniquement les en-têtes en PHP en utilisant cURL ?

Comment puis-je récupérer uniquement les en-têtes en PHP en utilisant cURL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 12:02:02728parcourir

How can I Retrieve Only Headers in PHP using cURL?

Récupération d'en-tête uniquement via cURL en PHP

Cet article répond à deux questions concernant l'utilisation de cURL en PHP pour récupérer uniquement les en-têtes au lieu de données d'une page complète, axées sur l'efficacité du traitement et les défis de mise en œuvre spécifiques.

Efficacité du traitement

Oui, il y a une réduction de la puissance de traitement et de la consommation de bande passante sur le serveur distant lors de la récupération uniquement des en-têtes par rapport à la récupération de la page entière. En effet, le serveur peut éviter la surcharge liée à la génération et à l'analyse du contenu HTML, ce qui entraîne une charge plus légère.

Récupération de la date de modification du fichier

Pour récupérer la dernière modification date (en-tête Last-Modified) ou l'en-tête If-Modified-Since d'un fichier distant, les étapes suivantes peuvent être suivies :

<?php
class URIInfo
{
    public $info;
    public $header;
    private $url;

    public function __construct($url)
    {
        $this->url = $url;
        $this->setData();
    }

    public function setData()
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $this->url);
        curl_setopt($curl, CURLOPT_FILETIME, true);
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, true);
        $this->header = curl_exec($curl);
        $this->info = curl_getinfo($curl);
        curl_close($curl);
    }

    public function getFiletime()
    {
        return $this->info['filetime'];
    }
}

$filetime = (new URIInfo('http://www.example.com/file.xml'))->getFiletime();
if ($filetime != -1) {
    echo date('Y-m-d H:i:s', $filetime);
} else {
    echo 'filetime not available';
}
?>

Cette approche utilise une classe pour encapsuler la fonctionnalité permettant de récupérer les informations d'en-tête et extraire l'en-tête Last-Modified.

Défis d'implémentation

Le code d'origine que vous avez fourni a tenté d'obtenir la date de la dernière modification en utilisant curl_getinfo($header), ce qui est incorrect. curl_getinfo() doit être utilisé avec le handle cURL ($curl) pour récupérer les informations d'en-tête. De plus, l'utilisation de CURLOPT_FILETIME devrait être suffisante pour récupérer la date de dernière modification.

En conclusion, la récupération d'en-tête uniquement à l'aide de cURL en PHP peut potentiellement réduire la charge du serveur tout en vous permettant d'accéder à des informations d'en-tête spécifiques. En suivant les directives décrites ci-dessus, vous pouvez implémenter efficacement cette fonctionnalité dans votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn