2012-01-30 32 views
0

嗯,我有一些简单的文本文件,我正在尝试使用php读取该文件内容并将其更新到user.I设置每2秒ajax请求,但问题是文件将不会更新为每2秒可能是15或30或1分钟long.So我想这样做是否可以在连续的ajax请求中为php变量赋值一次?

检查文件的最后修改时间,如果不同,那么只更新它的用户,但在这里我被卡住。

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将被分配一个值只有一次,我的意思是第一个AJAX请求,那么以后它$b值进行比较,如果$b$a大于更新的内容,然后用户填写$a$b

但这是我困扰的地方。任何帮助非常感谢。谢谢

回答

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; 
    } 
?> 
0

对于每个用户应分配唯一的ID,最后一次应存放例如在数据库中。唯一的ID可能是在第一次请求后在cookie中,然后用于在数据库中查找信息。

相关问题