首页  >  文章  >  后端开发  >  如何使用 cURL 的仅标头检索有效检索远程文件的上次修改日期?

如何使用 cURL 的仅标头检索有效检索远程文件的上次修改日期?

Barbara Streisand
Barbara Streisand原创
2024-11-16 02:51:03662浏览

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

通过 cURL 在 PHP 中进行仅标头检索

为了有效检索文件元数据,例如上次修改日期,请考虑使用 cURL 的标头 -仅有检索功能。此方法可以显着降低远程服务器上的处理能力和带宽消耗。

要仅检索标头,您可以在 cURL 请求中设置以下选项:

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

这告诉 cURL发送 HEAD 请求,指示服务器仅使用 HTTP 标头信息进行响应,省略响应的实际正文。

上次修改日期检索

至要获取最后修改日期,可以使用curl_getinfo()从cURL句柄中检索FILETIME信息。这是一个示例:

$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);

示例代码

这是一个更完整的示例,使用 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';
}

以上是如何使用 cURL 的仅标头检索有效检索远程文件的上次修改日期?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn