2013-02-04 49 views
1

我有一个xml文件,其中包含数据库信息,应在安装脚本或文件内容发生更改时加载。我可以在xml文件上使用md5_file(),然后将值存储在数据库中,并在每次脚本运行时将其与文件的散列值进行比较?它有什么缺点,还有其他更快更简单的方法吗?如何检查文件是否已更改?

+0

是的,你可以使用散列,或者干脆检查文件的修改时间。你可以在搜索引擎中输入你的问题... –

+2

我只是把它输入到搜索引擎中,而我在这里结束了。一个完全合法的问题,这是讨论的最佳地点,imo。 – Octopus

回答

6

这取决于你的意思是“改变”。如果你需要修改内容,那么检查filemtime是不够的 - 这是一个梦幻般的第一步,应该首先使用,但它本身是不够的。

用文件内容的散列(如md5_file)合并filemtime并且它将有效地工作。

+1

不只是使用md5_file足够呢?我只关心内容是否与众不同。如果它被相同的内容覆盖或文件名改变不重要。 – John

+3

嗯,是的。但是,这是昂贵的。 'filemtime'检查旨在用作更高效的查找。然后,只有修改时间改变了,它才会执行昂贵的'md5_file'调用。 –

+1

但文件时间唯一不同,但散列不是,当它被覆盖相同的信息或当文件名已更改,对吗? – John

4

最好的办法是存储文件mod时间,并将其与将来检查的文件mod时间进行比较。

if(filemtime('myfile.txt') > $result_set['filemtime']) { 
    // file was modified 
} 

我希望你可以自己做数据库。

+0

太好了,谢谢! – John

1

的simpliest的方法是比较file_date - 您可以使用filemtime这个

2

也许你可以使用PHP's filemtime() function。简单地说,这个函数获取指定文件的文件修改时间。

该函数返回一个unix time stamp,所以您需要将最后一次已知的修改时间保存在某处以便将其与新值进行比较。

$modifiedTs = filemtime($filename); 
if ($modifiedTs != $lastModificationTs){ 
    echo "$filename was modified!"; 
} 
相关问题