>我正在寻找一个我几乎无法理解的问题的指导。我有一个.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 查询。