我写了一个脚本(可能不太完美,我是新手)每X分钟检查一次新消息(使用ArrowChat和Buddypress)。
它工作得很好,但我担心它会使我的服务器过载吗?它是共享的。
代码:
PHP
// Prepare database
global $wpdb;
$wpdb->prepare;
// Check are there new messages
$query = $wpdb->get_results( \'SELECT `id` FROM `arrowchat` WHERE `to` = "\'.$_GET["user_id"].\'" AND `user_read` = "0" AND `read` = "0"\');
// Count messages
$x = 0;
foreach( $query as $msg ) {
$x = $x + 1;
}
// If there are new messages, echo their number
if(!empty($query)) {
echo $x;
}
JS:
<script>
function checkMessages() {
jQuery.ajax({
type: "GET",
url: "https://twobytwo.com.hr/check-new-msg.php?user_id=\'(PHP user id var)\'",
dataType: "html",
success: function(response) {
jQuery(".kleo-open-chat > .count").html(response);
}
});
}
setInterval(checkMessages(), 600000);
</script>
提前谢谢。
SO网友:Some Guy
谢谢你的帮助。我用另一种方式做了。我相信将来会有更多的用户,它不会超载。
我会尽力解释,但如果有人需要代码方面的帮助,我愿意提供帮助。
在“send\\u message.php”文件中,在数据库插入之后,我添加了一段代码,创建一个新的空文本文件,并将接收用户id作为名称。
在“receive\\u user.php”文件中,在数据库更新(消息读取)后,我还添加了一段代码,但这段代码从上面删除了相同的文本文件。
最后,AJAX使用的PHP代码检查文件名为登录用户id的文本文件是否存在。如果是,则会回显1。
如您所见,没有固定的数据库检查。