如何通过AJAX监控文件更改?
我正在寻找一种通过AJAX(而不是通过JS框架!)实时监控文件更改的方法。如果对该文件进行了更改,我需要它发出警报消息。我是个彻头彻尾的阿贾克斯傻瓜,所以请温柔点。;-) 编辑:让我更详细地解释一下目的。我正在使用一个用PHP为webhop编写的聊天脚本,我想要的是从一个管理模块监视聊天请求。聊天记录存储在文本文件中,如果有人启动聊天会话,则会创建一个新文件。如果是这样的话,在管理模块中,我希望实时看到它如何通过AJAX监控文件更改?,ajax,file,real-time,Ajax,File,Real Time,我正在寻找一种通过AJAX(而不是通过JS框架!)实时监控文件更改的方法。如果对该文件进行了更改,我需要它发出警报消息。我是个彻头彻尾的阿贾克斯傻瓜,所以请温柔点。;-) 编辑:让我更详细地解释一下目的。我正在使用一个用PHP为webhop编写的聊天脚本,我想要的是从一个管理模块监视聊天请求。聊天记录存储在文本文件中,如果有人启动聊天会话,则会创建一个新文件。如果是这样的话,在管理模块中,我希望实时看到它 有道理吗 AJAX只是一个javascript,因此从它的定义来看,除非其他服务调用js/
有道理吗 AJAX只是一个javascript,因此从它的定义来看,除非其他服务调用js/AJAX来通知更改,否则您没有任何工具来访问文件。要使用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使用一个框架,只是为了处理跨浏览器的不一致性。我最近从头开始做了这件事 我不知道你对PHP(这是我所知道的唯一一种服务器脚本语言)有多满意,但我会尽量简短,如果有任何疑问,请随时提问 我使用的是长轮询,这包括(
编辑:从一些评论中,我看到有一个名为FAM的东西可以监控文件更改,这似乎是PHP脚本的一种方式您的设置是什么?文件在服务器上,您想监控来自网络上其他地方的客户端的更改,还是其他什么?本例中的设置是localhost,脚本必须监控文件在脚本所在的同一台服务器上可以通过HTTP访问。顺便说一下,这是一个文本文件。我在Mac OS X 10.7服务器上使用Apache 2和PHP。我无法安装FAM,但感谢您的提示,它可能对其他人有用!使用
sha1_文件
()若要计算文件的哈希值,请将其存储在某个位置,然后将上一个哈希值与当前哈希值进行比较,以查看是否有任何更改。这仍然无法解决实时监控问题(有关详细信息,请参阅原始帖子中的“我的编辑”)。这不是通过在后台运行PHP脚本来完成的,而是通过客户端脚本来完成的。我知道这可以通过AJAX以某种方式完成。我以前见过它。您可以通过AJAX随时检查某个文件中的更改,但不检查创建的新文件,除非您已经知道它的名称。您可以随时使用另一个文件来检查使用“conversations.json”之类的静态文件,并让它列出所有当前对话。我可以做的是将新的聊天请求推送到一个文件中,在该文件中存储新创建文件的路径。我可以用PHP读取这些文件并向管理仪表板发送通知。现在如何操作(使用示例代码将不胜感激!)我是否使用自动刷新的AJAX监控单个文件?