Php 来自mysql的长轮询信息不工作

Php 来自mysql的长轮询信息不工作,php,jquery,mysql,ajax,long-polling,Php,Jquery,Mysql,Ajax,Long Polling,我正在尝试使用ajax、jquery、php和mysql进行基于长轮询的聊天,但似乎有点不对劲(我也是长轮询新手) index.php: <?php include 'db.php'; $result = mysql_query("SELECT id FROM chatpoll ORDER BY id DESC LIMIT 1"); while($row = mysql_fetch_array($result)) { $old_msg_id = $row['id']; } ?&g

我正在尝试使用ajax、jquery、php和mysql进行基于长轮询的聊天,但似乎有点不对劲(我也是长轮询新手)

index.php:

 <?php
include 'db.php';
$result = mysql_query("SELECT id FROM chatpoll ORDER BY id DESC LIMIT 1");
while($row = mysql_fetch_array($result))
{
    $old_msg_id = $row['id'];
}
?>
<html>
<head>
    <script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" charset="utf-8">

        var old_msg_id = <?php echo $old_msg_id; ?>;

        function waitForMsg(){
            $.ajax({
                type: "GET",
                url: "poll.php?old_msg_id=" + old_msg_id,
                async: true,
                cache: false,

                success: function(data){
                    var json = eval('(' + data + ')');
                    if(json['msg'] != "") {
                        alert("New msg added to base!");
                    }
                    old_msg_id = json['old_msg_id'];
                    setTimeout('waitForMsg()',1000);
                },
                error: function(XMLHttpRequest, textStatus, errorThrown){
                    alert("error: " + textStatus + " (" + errorThrown + ")");
                    setTimeout('waitForMsg()',15000);
                }
            });
        }
        $(document).ready(function(){
            waitForMsg();
        });
        function load(old_msg_id) //part of code which i'm not using yet
        {
            $.get('getmsg.php?last_msg_id='+ old_msg_id, function(data){
                $('#chat').append(data);
            }, 'html');
        }
    </script>
</head>
<body>
    <div id="chat">
    </div>
</body>
</html>

var old_msg_id=;
函数waitForMsg(){
$.ajax({
键入:“获取”,
url:“poll.php?old_msg_id=“+old_msg_id,
async:true,
cache:false,
成功:功能(数据){
var json=eval(“(“+data+”)”);
如果(json['msg']!=“”){
警报(“新的味精添加到基础中!”);
}
old_msg_id=json['old_msg_id'];
setTimeout('waitForMsg()',1000);
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
警报(“错误:+textStatus+”(“+ERRORSHOUND+”));
setTimeout('waitForMsg()',15000);
}
});
}
$(文档).ready(函数(){
waitForMsg();
});
函数加载(old_msg_id)//我还没有使用的部分代码
{
$.get('getmsg.php?last\u msg\u id='+old\u msg\u id,函数(数据){
$('#chat')。追加(数据);
}","html";;
}
和poll.php

 <?php
include 'db.php';
$old_msg_id = $_GET['old_msg_id'];
$result = mysql_query("SELECT id FROM chatpoll ORDER BY id DESC LIMIT 1");
while($row = mysql_fetch_array($result))
{
    $last_msg_id = $row['id'];
}
while($old_msg_id >= $last_msg_id) {
    usleep(1000);
    clearstatcache();
    $old_msg_id = $last_msg_id;
}
$response = array();
$response['msg'] = 'new';
$response['old_msg_id'] = $old_msg_id;
echo json_encode($response);
?>


index.php和poll.php中都没有显示任何错误,但当我插入id大于旧\u msg\u id的数据时,什么都不会发生。

将poll.php文件中的代码更改为以下内容:

<?php
include 'db.php';
$old_msg_id = $_GET['old_msg_id']; 
$result = mysql_query("SELECT id FROM chatpoll ORDER BY id DESC LIMIT 1");
while($row = mysql_fetch_array($result))
{
    $last_msg_id = $row['id']; 
}
while($last_msg_id <= $old_msg_id)
{
    usleep(1000);
    clearstatcache();
    $result = mysql_query("SELECT id FROM chatpoll ORDER BY id DESC LIMIT 1");
    while($row = mysql_fetch_array($result))
    {
        $last_msg_id = $row['id'];
    }
}
$response = array();
$response['msg'] = 'new';
$response['old_msg_id'] = $last_msg_id;
echo json_encode($response);
?>

我要把炸弹扔在这里。很明显,你已经开始学习PHP了,所以你最好养成一个好习惯
ext/mysql
,又称为
mysql\uu
——函数已经存在很长时间了。您应该切换到或。