连接到mysql时PHP超时


PHP timeouts while connecting to mysql

我正在用PHP+Mysql开发聊天应用程序。

我的想法是在后台打开脚本(ajax),它会持续加载一分钟,以检查用户是否收到任何新消息。

这是

    $start = time();
    while(time() - $start < 60)
    {
    $result = mysql_query("SELECT * FROM messages WHERE `to` = '$me_user'");
        if(mysql_num_rows($result))
        {
        $row = mysql_fetch_array($result);
        $id = $row['id'];
        $from = $row['from'];
        $time = $row['time'];
        $msg = $row['message'];
        mysql_query("DELETE FROM messages WHERE id = $id");
        die("appendMsg('$msg',to,'$time');");
        }
    $result = null;
    Sleep(2);
    }

所以实际上它每2秒钟检查一次新消息。

但我的问题是,由于这个原因,整个网站开始"滞后"。我认为问题出在Sleep()。

有时甚至PHP在尝试连接到DB时也会超时。

致命错误:第19行的C:''examplep''htdocs''chatly''config.php中超过了30秒的最大执行时间

有什么建议可以让我停顿两秒钟吗?或者您认为通过ajax每2秒发送一次新请求会更好?

要修复该致命错误,可以使用ini_set('max_execution_time', 60);将超时设置为一分钟。

Sleep(2)函数应为sleep(2)

您可以尝试使用ajax:

setInterval(function() {
    if(window.XMLHttpRequest) {
        ajax_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    ajax_request.open('POST', 'getChatMessages.php', true);
    ajax_request.send(null);
    ajax_request.onreadystatechange = function() {
        if(ajax_request.readyState == 4) {
            if(ajax_request.status == 200) {
                document.getElementById('chat_content').innerHTML = ajax_request.response;
            }
        }
    }
}, 2000);