我想知道如何检测页面何时使用PHP更新。我在Google上研究了一些东西,但没有发现任何东西。
我想要做的是在页面更新时调用特定的函数。我将运行一个cron作业来运行代码。
我想要这样的事情:
if (page updated) {
//functions
}
else
{
//functions
}
如果我不能做那样的事情那么我想至少知道如何检测页面何时用PHP更新。请帮忙!
答案 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>
类似的东西:)