« 上一篇下一篇 »

使用FTP函数之检查文件更新时间

检查文件更新时间,是在命令行中手动使用FTP传输文件的第三个步骤。下面我们来具体了解一下这一步骤吧!文件时间是我们使用FTP函数而不是其他更简单的文件函数的原因。文件函数可以很容易读,而且在某些情况下,也可以通过网络接口写文件,但是大多数状态函数,如:filemtime()无法执行远程操作。这一点将在以后发生变化。

检查文件更新时间,是在命令行中手动使用FTP传输文件的第三个步骤。下面我们来具体了解一下这一步骤吧!

假设我们打算更新文件的新文件的本地副本,比较明智的做法是首先检查文件是否需要更新,因为如果文件是最新的,就无须重新下载此文件,特别是当它是一个很大的文件的时候。这将避免不必要的网络通信量。现在,让我们来查看实现检查文件更新时间的代码。

文件时间是我们使用FTP函数而不是其他更简单的文件函数的原因。文件函数可以很容易读,而且在某些情况下,也可以通过网络接口写文件,但是大多数状态函数,如:filemtime()无法执行远程操作。这一点将在以后发生变化。

要确定是否需要下载一个文件,可以通过函数file-exists()确切一个文件的本地副本是否存在。如果没有,显然需要下载此文件。如果此文件存在,通过函数filemtime()获得文件的最后修改时间,并把它存储在变量$localtime中。如果此文件不存在,设置变量$localtime为0,这样,此文件将会比任何可能的远程文件修改时间都要“老”。
echo ‘Checking  file time. . .’;
if (file-exists($localfile))
{
$localtime=filemtime($localtime);
echo ‘local file last updated’;
echo date(‘G:I J-M-YA’,$locatime);
echo ‘’;
}
else
$lcoaltime=0;

解决了本地时间的问题后,我们需要获得远程文件的修改时间。可以通过函数ftp-mdtm()获得此信息,如下所示:

$remotetime =ftp-mdtm($conn,$remotefile);

这个函数带了两个参数,并返回文件最后修改时间的UNIX时间戳或者-1.不是所有的FTP服务器都支持这种特性,因此通过这个函数可能得不到一个有用的结果。在这种情况下,可以选择手动设置,将变量$localtime加1,是的变量$remotetime比$localtime“新”。这样,就可以确保能够下载文件,如下所示:
If(!($remotetime >=0))
{
//This doesn’t mean the file’s not there, server may not support mod time
echo  Can’t  access remote file time.’;
$remotetime=$localtime+1;//make sure of an update
}
else
{
echo ‘Remote file last update’;
echo date(‘G:I J-M-Y’,$renotetime);
echo ‘’;
}

当我们拥有二者的时间时,就可以对他们进行比较,确认是否需要下载这个文件:if(!($remotime >$locatime))
{
echo ‘Local copy is up to date .’;
exit;
}

« 上一篇下一篇 »