Maison  >  Article  >  développement back-end  >  Comment récupérer efficacement la date de dernière modification d'un fichier distant à l'aide de la récupération en-tête uniquement de cURL ?

Comment récupérer efficacement la date de dernière modification d'un fichier distant à l'aide de la récupération en-tête uniquement de cURL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-16 02:51:03660parcourir

How to Efficiently Retrieve Last Modified Date of a Remote File using cURL's Header-Only Retrieval?

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

Pour une récupération efficace des métadonnées de fichiers, telles que la date de dernière modification, envisagez d'utiliser l'en-tête de cURL. seule fonction de récupération. Cette méthode peut réduire considérablement la puissance de traitement et la consommation de bande passante sur le serveur distant.

Pour récupérer uniquement les en-têtes, vous pouvez définir les options suivantes dans votre requête cURL :

curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_NOBODY, true);

Cela indique à cURL pour envoyer une requête HEAD, qui demande au serveur de répondre avec uniquement les informations d'en-tête HTTP, en omettant le corps réel de la réponse.

Récupération de la date de dernière modification

À Pour obtenir la date de la dernière modification, vous pouvez utiliser curl_getinfo() pour récupérer les informations FILETIME du handle cURL. Voici un exemple :

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://url/file.xml");
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_FILETIME, true);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_exec($curl);
$filetime = curl_getinfo($curl, CURLINFO_FILETIME); // Returns timestamp of last modification
curl_close($curl);

Exemple de code

Voici un exemple plus complet qui récupère et affiche la date de dernière modification d'un fichier distant à l'aide de cURL :

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'];
    }

    // Other functions can be added to retrieve other information.
}

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

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