使用PHP确定是否已替换远程文件?

时间:2010-04-27 06:10:57

标签: php

我有一个MySQL数据库,里面有一些网址。每行一个URL。每个URL都有我的脚本。我想要做的是通过PHP脚本检查文件是否仍然存在。不检查它是否404,而是检查它是否已被修改或替换。这可能吗?如果是这样,它将如何实现?

我在考虑让远程文件回显一些字符串,并让本地文件检查该字符串的页面,但这似乎有点低效和草率。

编辑:远程文件不向远程用户输出任何数据,它们会触发内部脚本,因此远程用户只能看到白页。 (检查脚本也只会看到这个)

5 个答案:

答案 0 :(得分:2)

防弹方式

  1. 获取网址内容。
  2. 计算MD5()SHA1()哈希。
  3. 再次获取URL并检查哈希值是否已更改。
  4. 还有其他方法(例如Last-Modified HTTP标头),但它们不适用于所有服务器。

答案 1 :(得分:1)

你可以要求文件在某些​​条件下发送他的md5,例如:

if($_GET['md5hash']==true)
{ 
  echo md5($_SERVER['SCRIPT_FILENAME']);
}

您可以通过接收他的md5或通过他的md5接收不同的内容来轻松了解您的脚本是否已更改,但我不知道您的分数是多少。

答案 2 :(得分:1)

只需使用

md5_file('http://path.to/file');

并存储哈希以便稍后检查

答案 3 :(得分:0)

如果网址是本地文件,则可以在每个文件上使用filemtime,并根据表中的修改时间行检查时间。

答案 4 :(得分:0)

您也可以在远程文件上使用stat并查看mtime记录。