2011-05-14 116 views
1

所以我創建了一個聊天jQuery的PHP和MySQL ..它也使用AJAX。因此,這裏的代碼php聊天讓我想起很多內存! JQuery的,PHP和MySQL

的PHP程序頁面:

$result = mysql_query("SELECT * 
         FROM messages 
        ORDER BY id DESC 
         LIMIT 30") or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 
    if($row['correct'] == 1) { 
    $correct = "<font color='green'>"; 
    } else { 
    $correct = "<font color='red'>"; 
    } 

    echo $correct; 
    echo $row['name']. ": ". $row['message'] . "</font>"; 
    echo "<br />"; 
} 

我的索引頁上的jQuery看起來像這樣

$(document).ready(function() { 
    $('form[name=answer]').submit(function() { 
    validate(); 
    return false; 
    }); 

function validate() { 
    $.post("http://localhost:8888/school/procees.php", 
      {answer: $('input[name=answer]').val(), 
      questionid: $('input[name=questionid]').val(), 
      name: $('input[name=id]').val()}, 'json'); 
} 

setInterval(function() { 
    $('#about').load('maketable.php'); 
}, 1000); 

}); 

據我所知,在開始檢查,然後打印東西展現出來,需要花費很多記憶我不知道如何以其他方式做。對代碼的建議和批評是值得歡迎的。我該如何改進它?

+0

連續輪詢和數據庫不是一個處理這個問題的好方法。最喜歡FB使用稱爲長輪詢(又名Comet)的技術。 http://en.wikipedia.org/wiki/Comet_(programming),當html5更廣泛地實現時,也會支持套接字連接,這將是最終的解決方法,因爲不需要任何東西一個數據庫或其他數據源。消息將進入並立即發回給每個用戶。 – dqhendricks 2011-05-14 23:54:40

回答

1

這裏有其他代碼可能/可能不會幫助 - 我要說的是,如果這是實時聊天,請考慮在mysql中使用MEMORY表類型 - 它的讀取速度非常快,這使得它成爲一個很好的候選人這種類型的應用程序。

確保您的ajax請求只請求您尚未加載的數據 - 這可能有所幫助。

如果您需要更多的幫助,我們需要看到maketable.php代碼太..

+0

哎呀我包括maketable.php不進行你看到的代碼是表 – Tom 2011-05-14 23:49:50

+0

我將如何檢查 – Tom 2011-05-14 23:50:18

+0

我havnt加載數據 – Tom 2011-05-14 23:50:35

3

Node(JS)作出相當多的支持高併發的最小開銷這個確切的情況。將它與socket.io結合起來,您就可以使用舊版設備的回退HTML5套接字。

想要在您的系統上看到這個正在運行的實例嗎?只需在github上克隆this project即可。

+0

+1用於指出該作業的正確工具。 – MarioRicalde 2011-05-15 00:16:42

+0

謝謝,這是非常有幫助的 – Tom 2011-05-15 02:08:10