Php 获取远程文件的上次修改日期

Php 获取远程文件的上次修改日期,php,jquery,curl,Php,Jquery,Curl,我想通过curl获得远程文件的最后修改日期。有人知道怎么做吗 来自: filemtime()是这里的键。但是我不确定你是否能得到远程文件的最后修改日期,因为服务器应该把它发送给你。。。可能在HTTP头中?您可能可以使用以下方法执行类似操作: 是否希望从 您可以使用curl\u setopt($handle,CURLOPT\u HEADER,true)激活接收回复的标题。您还可以启用CURLOPT_NOBODY以仅接收标题,然后通过分解结果\r\n并解释单个标题。上次修改的标题是您感兴趣的标题

我想通过curl获得远程文件的最后修改日期。有人知道怎么做吗

来自:



filemtime()是这里的键。但是我不确定你是否能得到远程文件的最后修改日期,因为服务器应该把它发送给你。。。可能在HTTP头中?

您可能可以使用以下方法执行类似操作:


是否希望从


您可以使用
curl\u setopt($handle,CURLOPT\u HEADER,true)
激活接收回复的标题。您还可以启用CURLOPT_NOBODY以仅接收标题,然后通过分解结果\r\n并解释单个标题。上次修改的标题是您感兴趣的标题。

在PHP中,您可以使用本机函数
get\u headers()


有时页眉带有不同的大小写,这应该有帮助:

function remoteFileData($f) {
    $h = get_headers($f, 1);
    if (stristr($h[0], '200')) {
        foreach($h as $k=>$v) {
            if(strtolower(trim($k))=="last-modified") return $v;
        }
    }
}

通过编辑h4kuna的答案,我创建了以下内容:

$fileURL='http://www.yahoo.com';
$headers = get_headers($fileURL, 1);
$date = "Error";
//echo "<pre>"; print_r($headers); echo "</pre>";
if ( $headers && (strpos($headers[0],'200') !== FALSE) ) {
    $time=strtotime($headers['Last-Modified']);
    $date=date("d-m-Y H:i:s", $time);
}
echo 'file: <a href="'.$fileURL.'" target="_blank">'.$fileURL.'</a> (Last-Modified: '.$date.')<br>';
$fileURL='1!'http://www.yahoo.com';
$headers=get_headers($fileURL,1);
$date=“Error”;
//回声“;打印(页眉);回声“;
if($headers&(strpos($headers[0],'200')!==FALSE)){
$time=strottime($headers['Last-Modified']);
$date=日期(“d-m-Y H:i:s”,$time);
}
echo文件:(上次修改:'.$date')

必须解决类似的问题,但对我来说每天下载一次就足够了,所以我只比较了本地(下载)缓存文件的修改日期。远程文件没有上次修改的头


手册中写道:“从PHP5.0.0开始,这个函数也可以与一些URL包装器一起使用。”根据我的经验,这个方法并不总是有效(它取决于您的PHP.ini)所以原生的get_头对我来说更有效。是的-只要请求headers假设他们发送最后修改的headers这似乎有403-禁止-响应的问题-它似乎无法访问头。我注意到这段代码有时不起作用,原生php get_头对我来说更合适。“如果”条件不能正常工作
if(!$h | | strpos($h[0],'200')!==false){
对我来说效果更好!dino是正确的。上面的代码中似乎意外省略了一个
操作符。if语句实际上应该是
if(!$h | | str str($h[0],'200')==false)){
可能还需要将PON中的小写代码合并并添加到此中。
if(strtolower(trim($k))=='last-modified')
<? $last_modified = filemtime("content.php"); print("Last Updated - ");
print(date("m/d/y", $last_modified)); ?

// OR

$last_modified = filemtime(__FILE__); 
<?php
$h = get_headers($url, 1);

$dt = NULL;
if (!($h || strstr($h[0], '200') === FALSE)) {
    $dt = new \DateTime($h['Last-Modified']);//php 5.3
}
function remoteFileData($f) {
    $h = get_headers($f, 1);
    if (stristr($h[0], '200')) {
        foreach($h as $k=>$v) {
            if(strtolower(trim($k))=="last-modified") return $v;
        }
    }
}
$fileURL='http://www.yahoo.com';
$headers = get_headers($fileURL, 1);
$date = "Error";
//echo "<pre>"; print_r($headers); echo "</pre>";
if ( $headers && (strpos($headers[0],'200') !== FALSE) ) {
    $time=strtotime($headers['Last-Modified']);
    $date=date("d-m-Y H:i:s", $time);
}
echo 'file: <a href="'.$fileURL.'" target="_blank">'.$fileURL.'</a> (Last-Modified: '.$date.')<br>';
$xml = 'test.xml';
if (is_file($xml) || date('d', filemtime($xml)) != date('d')) {
    $xml = file_get_contents(REMOTE_URL);
}