通过AJAX监控文件更改,如何?

时间:2011-08-11 15:16:29

标签: ajax file real-time

我正在寻找一种通过AJAX(不是通过JS框架!)来实时监控文件以进行更改的方法。如果对该文件进行了更改,我需要它来发出警告消息。我是一个完整的AJAX菜鸟,所以请保持温柔。 ; - )

编辑:让我详细解释一下目的。我正在使用我用PHP编写的聊天脚本用于网店,我想要的是来自管理模块监控聊天请求。聊天记录存储在文本文件中,如果有人启动聊天会话,则会创建新文件。如果是这种情况,我想在管理模块中实时查看。

有道理吗?

3 个答案:

答案 0 :(得分:3)

要使用AJAX监视文件以进行更改,您可以执行以下操作。

var previous = "";

setInterval(function() {
    var ajax = new XMLHttpRequest();
    ajax.onreadystatechange = function() {
        if (ajax.readyState == 4) {
            if (ajax.responseText != previous) {
                alert("file changed!");
                previous = ajax.responseText;
            }
        }
    };
    ajax.open("POST", "foo.txt", true); //Use POST to avoid caching
    ajax.send();
}, 1000);

我刚试过它,它运行得很好,但我仍然认为AJAX不是这里的方法。对于大文件,比较文件内容会很慢。另外,你没有提到框架,但你应该使用一个用于AJAX,只是为了处理跨浏览器的不一致。

答案 1 :(得分:0)

AJAX只是一个javascript,所以从它的定义来看,你没有任何工具可以访问文件,除非其他服务调用js / AJAX来通知这个变化。

答案 2 :(得分:0)

我最近从零开始做了这件事。

我不知道你使用PHP有多少菜鸟(这是我所知道的唯一的服务器脚本语言),但我会尽量简短,随时提出疑问。

我正在使用长轮询,其中包括(

  1. 创建一个PHP脚本,定期检查文件内容,只在看到任何更改时才响应(可能包含对响应中更改的描述)
  2. 创建XHR对象
  3. 将您的通知代码包含为回调函数(可以使用说明)
  4. 提出请求
  5. PHP脚本将开始检查文件,但在发生更改后才会回复
  6. 当它响应时,将调用回叫并启动通知代码
  7. 如果您不关心文件的内容,只关心它已被更改,您可以检查上次修改时间而不是PHP脚本中的内容。

    编辑:从一些评论中我看到有一些东西可以监视名为FAM的文件更改,这似乎是PHP脚本的方法