我有一些简单的文本文件,我正在尝试使用php读取该文件内容并将其更新给用户。我每隔2秒设置一次ajax请求,但问题是文件不会每次都更新2秒可能是15或30或1分钟。所以我想这样做
检查文件的最后修改时间,如果不同,则只将其更新给用户,但在此处我被困在哪里。
Javascript functions
function read()
{
read_text();
t=setTimeout("read()",200);
}
function read_text()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('read').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","demo.php",true);
xmlhttp.send();
}
我的php文件
<?php
$a = fileattime("filenam");
$b = fileattime("filenam");
if($b > $a )
{
echo "update contents";
$a = $ b;
}
?>
我想将文件的最后修改时间存储在$a
变量中,并将该值与$b
变量进行比较,但此处$a
将被每个ajax请求的新值覆盖。我希望$a
仅为$b
分配一次值,我的意思是第一个ajax请求,然后将其与$b
值进行比较,如果$a
大于$a
则将内容更新为用户,然后使用$b
但这是我坚持的地方。非常感谢任何帮助。谢谢
答案 0 :(得分:2)
尝试创建会话,并将信息存储在会话变量中。
http://us3.php.net/manual/en/reserved.variables.session.php
如果您这样做,您将拥有一个持久值,您可以使用该值来测试以查看上次修改/更新的值。
请务必在脚本的开头执行session_start()。
你可以看起来像这样...... JS:
// standard Ajax stuff
xmlhttp.open("GET", "demo.php?request=1", true);
xmlhttp.send();
PHP:
<?php
session_start();
if($_GET['request'] == 1) $_SESSION['modified_since'] = fileattime('filename');
$a = $_SESSION['modified_since'];
$b = fileattime("filename");
if($b > $a) {
echo "Update Contents";
$_SESSION['modified_since'] = $b;
}
?>
答案 1 :(得分:0)
应为每个用户分配唯一ID,最后一次应存储在数据库中。唯一ID可能是在第一次请求后的cookie中,然后用于在数据库中查找信息。