我正在寻找一个我几乎无法掌握的问题的指导。我在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);
有没有办法工作和开发此代码,或者我应该在哪里开始查看和使用?我真的没有线索,因为我之前从未做过这样的事情。我非常感谢任何指向我可以搜索和使用的相关关键字,方法或教程的指针!
答案 0 :(得分:0)
如果您想要让多个用户实时编辑文件,则可以使用web sockets。 socket.io
是一个库,允许您在服务器和通过Web套接字连接到它的所有客户端之间双向发送消息。
在您的情况下,一旦对txt文件进行了编辑,您就可以向所有连接的客户端广播消息,通知他们有关更改的信息。
它就像socket.broadcast.emit('File Edited')
一样简单,您可以通过套接字本身发送新内容,也可以在接收此套接字消息时执行ajax查询。