php xdiff_file_diff和xdiff_file_补丁函数用于加载新的聊天信息
这是一个聊天脚本:php xdiff_file_diff和xdiff_file_补丁函数用于加载新的聊天信息,php,Php,这是一个聊天脚本: 在表单submit with action process.php上追加newfile.txt中键入的文本 如果newfile.txt和oldfile.txt之间存在差异,我使用带有setInterval的ajax检查xdiff_file_diff()的差异,并将差异写入diff.txt 该脚本使用xdiff_file_patch()来修补oldfile.txt以消除差异 脚本的目的是使用jQuery.append()只将新消息添加到聊天室div中,以获取消息,因此不会重新加
$myfile = fopen('newfile.txt', 'a') or die('unable to open file');
$txt = $_POST['text'] . "\n";
fwrite($myfile, $_SESSION['username'] . ': ' . $txt);
loadmessages.php
xdiff_file_diff('oldfile.txt', 'newfile.txt', 'diff.txt');
$myfile = fopen('diff.txt', 'r') or die('unable to open file');
if(filesize('diff.txt') > 0)
{
$text = fread($myfile, filesize('diff.txt'));
$text = str_replace('\n', '<br />', $text);
$yt = linkifyYouTubeURLs($text);
echo '<div class="message">' . filterText($array, $yt) . '</div>';
xdiff_file_patch('newfile.txt', 'diff.txt', 'oldfile.txt');
file_put_contents('diff.txt', '');
}
fclose($myfile);
演示的结果是:
不必在意详细的逻辑——我想说,使用xdiff进行此类用途一开始就相当错误。存储带有时间戳的消息,并在此基础上请求新消息。好的,我会尝试这种方法。你说的“确定”是什么意思?如果这段代码解决了您的问题,它应该是好的。如果有什么真正的问题,你能说得更清楚些吗?此外,您确定要使用文件来完成此任务吗?如果两个人同时写作,这不会导致很多问题吗?@NicoHaase是的,有问题,但如果可以的话,我会先尝试自己寻找解决方案,因为我现在不知道这种方法是如何工作的。当然,若你们愿意,你们可以帮忙
function loadmessages2()
{
$.ajax({
method: 'post',
url: 'loadmessages.php',
success: function(data){
if(data != '')
{
$('#chat_bubble').append(data);
$(document).on('submit','#frmsend',function(){
$("#chat_bubble").stop().animate({scrollTop: $("#chat_bubble")[0].scrollHeight}, 1000);
});
$("#chat_bubble").stop().animate({scrollTop: $("#chat_bubble")[0].scrollHeight}, 1000);
}
}
});
}