php
  • javascript
  • jquery
  • html
  • chat
  • 2012-04-03 68 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 
         }, 
        }); 
    } 
    
    相關問題