【发布时间】:2015-08-03 09:30:55
【问题描述】:
我每隔 5 秒调用一次 AJAX,以将当前登录用户的一些信息更新到 PHP 中的数据库表中。
但它会给我的网站带来沉重的负担,并且当有多个用户登录我的网站时,网站就会关闭。
有什么办法可以改善吗?
或
有什么方法可以使用 socket.io 或任何 JS 库(node.js 或 angular.js 或主干.js 或任何其他)解决我的问题?
这是我正在使用的代码:
Javascript 代码:
jQuery(document).ready(function ($) {
update_data();
function update_data() {
$.ajax({
type: "POST",
url: "$URL",
data: {update_current_time:1},
success: function(response){
setTimeout(update_data, 5000);
},
error: function(){
setTimeout(update_data, 5000);
}
});
}
});
PHP 代码:
if(isset($_POST['update_current_time']))
{
$query = "UPDATE users SET user_timer=now() WHERE user_id=".$_SESSION['id'];
$db->execute();
echo 'success';
die;
}
【问题讨论】:
-
这次更新的意义何在?你用这个干什么?可能有更好的、完全不同的方法来解决您在此处尝试解决的任何问题。
-
使用 websocket 并让 websocket 在新用户登录或会话到期时推送更新
-
最好的选择是使用 websocket。看看这个链接html5rocks.com/en/tutorials/websockets/basics
-
实际页面加载时间会更容易,它们将更真实地指示网站上的用户活动。除非网站大量使用 javascript 和 ajax 调用;由此替代的计时方法就足够了
-
首先考虑 TCP 连接的超时时间超过 5 秒。如果您认为任何未在 5 秒内签到的用户是“离线”的,那么您已经通过临时网络中断来打折用户。您可能可以安全地将时间范围延长到一分钟或更长时间。
标签: javascript php ajax angularjs node.js