难道 聊天室真要用 js 无限刷新吗?如果人多了那数据库的效率 会不会很低。
现在 在纠结用php做个聊天室啊有没更好的方法?

解决方案 »

  1.   

    ajax 每隔三秒发送一次请求取一次数据
      

  2.   


    我就在想 ajax的话会不会效率太低了点,人少还不怎么,如果人多 可能会出错。。
    刚刚看到个comet ,有没知道的,指点下·
      

  3.   

    看看这个最简单的,无数据库的
    //server.php
    <?php
    if(isset($_POST['text'])){
    file_put_contents('txt.txt', $_POST['text']."\r\n");
    echo '1';
    exit;
    }$filemtime = isset($_POST['filemtime']) && $_POST['filemtime']? $_POST['filemtime']: filemtime('txt.txt');while(1){
    if($filemtime == filemtime('txt.txt')){
    sleep(1);
    clearstatcache();
    }else{
    echo json_encode(array('filemtime' => filemtime('txt.txt'), 'text' => file_get_contents('txt.txt')));
    exit;
    }
    }
    //a.html
    <input type="text" id="text" value="text">
    <input type="button" value="发送" onclick="send()"><script src="../jquery.js"></script>
    <script>
    function send(){
    var text = document.getElementById("text").value; $.post("server.php", {"text": text, "rand": Math.random()}, function(data){
    if(data == "1"){
    alert("发送成功!");
    }
    });
    }
    </script>
    //b.html<div id="div"></div><script src="../jquery.js"></script>
    <script>
    var filemtime = 0;
    function test(){
    $.post("server.php", {"filemtime": filemtime, "rand": Math.random()}, function(data){
    if(data){
    data = eval("(" + data + ")");
    filemtime = data["filemtime"];
    document.getElementById("div").innerHTML = data["text"];
    setTimeout("test()", 1000);
    }else{
    alert("error");
    }
    });
    }test();
    </script>
      

  4.   

    http://topic.csdn.net/u/20100701/14/d288f17c-7d13-4902-9abd-97d64e37012a.html