php
  • javascript
  • jquery
  • html
  • chat
  • 2012-04-03 69 views 0 likes 
    0

    我正在浏览此tutorial以创建基于php/jQuery的聊天应用程序。限制聊天记录的大小

    总之,这个代码把消息记录:

    <? 
    session_start(); 
    if(isset($_SESSION['name'])){ 
        $text = $_POST['text']; 
    
        $fp = fopen("log.html", 'a'); 
        fwrite($fp, "<div class='msgln'>(".date("g:i A").") <b>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($text))."<br></div>"); 
        fclose($fp); 
    } 
    ?> 
    

    而此行代码显示的登录

    function loadLog(){  
    
         $.ajax({ 
          url: "log.html", 
          cache: false, 
          success: function(html){ 
           $("#chatbox").html(html); //Insert chat log into the #chatbox div 
          }, 
         }); 
        } 
    

    Log只是简单的HTML文档。

    如何限制日志以仅显示最后100条消息?那个日志不会太大? (超过1 MB)

    回答

    1

    下面列出的是你想要什么:

    $lines = file('log.html'); 
    
    // get line number 2 - 100 
    if(count($lines) > 100) $lines = array_slice(1, 99); 
    
    // convert newlines to <br/> and append 
    $lines[] = 
        nl2br("<div class='msgln'>(".date("g:i A").") <b>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($text))."<br></div>"); 
    
    file_put_contents('log.html', join("\n", $lines)); 
    
    0

    是否要限制在日志中只包含100条短信或者只显示100和削减如果文件大小达到阈值(1MB? ) (我想知道当你只显示100时你用100 +信息做什么?)

    但是,当添加一条新消息时,你可以检查日志中是否已经有100条消息, (最老的)消息并附加最新的消息?因为你不知道消息的长度,你需要读取整个文件内容并手动计算消息(例如,通过计算substr'div class = \'msgln \'')并完全重写(表示模式'w')日志。

    1

    你可以做到这一点的方法(可能会有一个更好的解决方案)

    function loadLog(){  
    
        $.ajax({ 
         url: "log.html", 
         cache: false, 
         success: function(html){ 
          $("#chatbox").filter(function (index) { 
           return index < 100; 
          }).html(html); //Insert chat log into the #chatbox div 
         }, 
        }); 
    } 
    
    相关问题