连接到mysql时PHP超时
我正在用PHP+Mysql开发聊天应用程序 我的想法是在后台打开脚本(ajax),它将持续加载一分钟,以检查用户是否收到任何新消息 给你连接到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))
$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可以避免页面延迟