在文件夹中更新txt文件时发出警报

时间:2015-01-26 03:36:21

标签: javascript php jquery ajax filemtime

我正在寻找一个我几乎无法掌握的问题的指导。我在PHP中通过readfile('stories/'.$sessionid.'.txt');加载了.txt文件的内容。任何用户都可以通过POST将文本添加到.txt文件中,我希望打开该页面的其他用户收到(并更新)最近的文件更改通知 - 而执行更新的用户没有收到关于他自己的更新的通知。

我一直很难找到相关信息,因为我不确定我应该搜索什么 - 甚至是方法(jQuery,AJAX,PHP?)。我读了一些关于filemtime的内容,但我不知道在这种情况下如何应用它。我主要是与前端合作,因此我不是那种经历过这种挑战的人。我找到了一个解决方案,但它会一直警告任何文件更改,并且可能会给服务器带来压力(在最坏的情况下是senario)我认为?

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", "stories/<?php echo($sessionid) ?>.txt", true); //Use POST to avoid caching
    ajax.send();
}, 1000);

有没有办法工作和开发此代码,或者我应该在哪里开始查看和使用?我真的没有线索,因为我之前从未做过这样的事情。我非常感谢任何指向我可以搜索和使用的相关关键字,方法或教程的指针!

1 个答案:

答案 0 :(得分:0)

如果您想要让多个用户实时编辑文件,则可以使用web socketssocket.io是一个库,允许您在服务器和通过Web套接字连接到它的所有客户端之间双向发送消息。

在您的情况下,一旦对txt文件进行了编辑,您就可以向所有连接的客户端广播消息,通知他们有关更改的信息。

它就像socket.broadcast.emit('File Edited')一样简单,您可以通过套接字本身发送新内容,也可以在接收此套接字消息时执行ajax查询。