我正在进行php聊天,并启动了php检查数据库部分。因此,当用户在聊天中键入内容时,会将其记录在MySQL数据库中,如何每隔10秒检查一次数据库,以便一个用户的聊天将使用来自其他用户的新消息进行更新。我知道你可以对一个间隔的页面使用ajax请求,但我希望php在同一页面上,而不是必须使用大量页面。这是检查数据库的代码
<?php
$con = mysqli_connect('host','user','pass','database');
$query = mysqli_query($con,"SELECT * FROM `messages`");
while ($row=mysqli_fetch_assoc($query)) {
$user = $row['user'];
$message = $row['message'];
echo 'User: ',$user,' Message: ',$message;
}
?>
先谢谢任何人!
答案 0 :(得分:2)
答案 1 :(得分:0)
这就是你需要的。我们需要为ajax自动重新加载设置时间。不要把所有东西都放在一个页面里。因为您必须重新加载页面才能刷新数据。这是一个糟糕的解决方案。
答案 2 :(得分:0)
AJAX可能是最简单的解决方案。如果你真的想要,你可以在PHP代码执行的同一页面上执行AJAX请求。
(function check() {
$.get('mypage.php', function(data) {
doSomethingWith(data);
setTimeout(check, 5000); // every 5 seconds
});
})();
答案 3 :(得分:0)
制作一段时间30秒,并且每隔一秒检查一次数据库,一旦你发现了一段时间正在被破坏的记录,它也会在30秒过期时被破坏。
$sec = 1;
while($sec <= 30) {
if(has record)
Send to the user;
$sec++;
sleep(one sec here);
}
使用睡眠10秒钟,每10秒检查一次......
答案 4 :(得分:0)
PHP没有setInterval函数。虽然我确信您可以使用crontask在服务器上自动执行它,但您也可以通过一些简单的Javascript实现此目的。
您尝试实现的概念称为短轮询。你想要做的是在Javascript中有一个setInterval
函数,它不断向你的PHP文件发出AJAX请求,该文件执行对数据库的检查以获取新消息。您的PHP应该将该信息返回到您的脚本,然后您只需填充用户的屏幕。
还有Long Polling,您只需维护连接并有setTimeout
等待消息进入。您可以自己找到更多信息,如果您有任何疑问,可以回到这里。
关于此的好视频:
https://www.youtube.com/watch?v=wHmSqFor1HU
希望这有帮助。