我正在使用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。
致命错误:第19行的C:\ xampp \ htdocs \ chatly \ config.php超出了30秒的最长执行时间
有任何建议我怎么能暂停2秒钟? 或者您认为通过ajax每2秒发送一个新请求会更好吗?
答案 0 :(得分:0)
你可以尝试用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);
答案 1 :(得分:0)
要修复该致命错误,您可以使用ini_set('max_execution_time', 60);
将超时设置为一分钟。
Sleep(2)
函数应为sleep(2)