连接到mysql时PHP超时

连接到mysql时PHP超时,php,mysql,xampp,Php,Mysql,Xampp,我正在用PHP+Mysql开发聊天应用程序 我的想法是在后台打开脚本(ajax),它将持续加载一分钟,以检查用户是否收到任何新消息 给你 $start = time(); while(time() - $start < 60) { $result = mysql_query("SELECT * FROM messages WHERE `to` = '$me_user'"); if(mysql_num_rows($result))

我正在用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);
    }
$start=time();
while(time()-$start<60)
{
$result=mysql\u查询(“从消息中选择*,其中`to`='$me\u user'”;
if(mysql_num_行($result))
{
$row=mysql\u fetch\u数组($result);
$id=$row['id'];
$from=$row['from'];
$time=$row['time'];
$msg=$row['message'];
mysql_查询(“从id=$id的消息中删除”);
die(“appendMsg(“$msg”,至“$time”);”;
}
$result=null;
睡眠(2);
}
实际上,它每2秒钟检查一次新消息

但我的问题是,整个网站开始“滞后”,因为这一点。 我认为问题出在睡眠中

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

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

有什么建议我怎么能暂停2秒钟?
或者您认为最好通过ajax每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); 

要修复该致命错误,可以使用
ini\u集('max\u execution\u time',60)
将超时设置为一分钟


Sleep(2)
函数应该是
Sleep(2)

为什么不尝试使用ajax呢?因为我认为如果我加载60秒的脚本,每2秒检查一次新消息,它会消耗更少的资源。你认为如果ajax每2秒发出一个请求会更好吗?是的,用户可以在没有任何延迟的情况下使用该页面。我的最大执行时间设置为60秒。脚本中应立即加载超时的其他部分PHP超时没有设置为60秒。只有您的while循环超时。PHP将在while循环结束之前使整个脚本超时,这将导致致命错误;我说的是网站的某些部分应该立即加载,但由于睡眠原因,它们不会加载。Config.php应该立即连接到DB!我知道,但是我认为太多的请求会占用太多的资源。所以我认为最好每分钟只发出一次请求。这是一样的,使用相同的php或使用另一个文件,使用ajax可以避免页面延迟