0

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

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

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);

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

4

1 回答 1

0

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

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

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

于 2015-01-26T03:57:23.867 回答