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


Alert when txt file is updated in folder

>我正在寻找一个我几乎无法理解的问题的指导。我有一个.txt文件的内容通过 PHP 中的readfile('stories/'.$sessionid.'.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);

有没有办法工作和开发这段代码,或者我应该从哪里开始寻找和使用?我真的不知道,因为我以前从未做过这样的事情。任何指向我可以搜索和使用的相关关键字、方法或教程的指针将不胜感激!

如果您正在寻找一种让多个用户实时编辑文件的方法,那么您可以使用 Web 套接字。 socket.io是一个库,允许您在服务器和通过 Web 套接字连接到它的所有客户端之间双向发送消息。

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

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