如何检测页面何时使用PHP更新

时间:2012-05-19 19:55:18

标签: php scripting

我想知道如何检测页面何时使用PHP更新。我在Google上研究了一些东西,但没有发现任何东西。

我想要做的是在页面更新时调用特定的函数。我将运行一个cron作业来运行代码。

我想要这样的事情:

if (page updated) {
//functions
}
else
{
//functions
}

如果我不能做那样的事情那么我想至少知道如何检测页面何时用PHP更新。请帮忙!

3 个答案:

答案 0 :(得分:5)

使用file_get_contents()获取页面内容,从中创建MD5哈希值,并将其与您已有的哈希值进行比较。我建议将这个哈希存储在一个简单的文件中。

$contents = file_get_contents('http://site.com/page');
$hash     = file_get_contents('hash'); // the text file where the hash is stored
if ($hash == ($pageHash = md5($contents))) {
  // the content is the same
} else {
  // the page has been updated, do whatever you need to do
  // and store the new hash in the file
  $fp = fopen('hash', 'w');
  fwrite($fp, $pageHash);
  fclose($fp);
}

不要忘记将allow_url_fopen设置为开启

答案 1 :(得分:2)

正如你所说,你可以每小时或15分钟或其他任何事情运行一个cron。它必须访问该页面,获取其修改日期,将其与存储值进行比较,如果不同,则执行某些操作。 显然,您需要更新您的信息,并将页面的当前日期设置为$ last_set_date或其他任何内容。 (应该在数据库中完成)

这个快速片段抓住了一个页面的最后更新时间(这里有关于该主题的更多信息:PHP documentation for get_headers):

<?php
$url = 'http://www.example.com';
$h = get_headers($url, TRUE);
echo "LAST MODIFIED: ", $h["Last-Modified"];
?>

获得此信息之后,您需要做的就是将它与之前存储的值(文本文件,数据库)进行比较,看看它是否不同。这是你脚本中的page updated检查!

随意通过评论给我更多澄清,我会尽力改善我的答案。

答案 2 :(得分:1)

您不能简单地检测页面是否已使用php更新,请尝试使用javascript

这里我假设你包含了jquery libray:

<script type="text/javascript">
     $( document ).ready( function(){
        $("#someElementInYourPageYouWannaWatch").change( function(){
          $.ajax({
            url:'http://yourwebsite.php/your_controller.php',
            ...
            success: function( response ){
              $("#someNotifyElement).html('updated');
            }
          });

        });
     });
</script>

类似的东西:)