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中,以获取消息,因此不会重新加

这是一个聊天脚本:

  • 在表单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中,以获取消息,因此不会重新加载整个聊天消息,因为我在iFrame中有youtube视频,所以它们不会被中断,通常我认为这是更好的方法

    问题代码中的逻辑是否正常,因为我在聊天室中看到了打印出来的旧输入,如何从diff.txt中删除杂乱内容并只显示文本差异

    我拥有的文件:

    process.php文件的一部分

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