wordpress-theme-puock
wordpress-theme-puock copied to clipboard
文章连续点赞导致cpu持续100%
- 主题版本号:2.7.10
- WordPress版本:6.3.1
- PHP版本:8.0.26
- 问题阐述:你好,在使用该主题过程中,文章点赞没有任何限制,持续一直点赞会造成服务器cpu一直100%,导致其他正常流量无法处理
- 单人对单文章是不可以持续点赞的
- 检查是否有其他插件导致此原因的
打开f12后,页面点赞一次向服务器发送一次post请求,都被服务器处理占用服务器资源导致正常用户无法访问,其他按钮没有这个问题
这个业务很简单的,你可以查看源码,我感觉不应该是这个导致的
确实是有这个问题,就算已经点赞了也会向后端请求验证是否已经点赞,连续点击的话会造成cpu占用增大,我加了个节流函数
{
key: "eventSendPostLike",
value: function() {
var a = this;
var lastClickTime = 0; // 上次点击的时间
var throttleTime = 2000; // 节流时间为2000毫秒
$(document).on("click", "#post-like", function(t) {
var currentTime = new Date().getTime(); // 获取当前时间
// 如果时间差大于节流时间,则发送请求
if (currentTime - lastClickTime >= throttleTime) {
lastClickTime = currentTime; // 更新上次点击时间
var e = $(a.ct(t)),
t = e.attr("data-id");
// 在请求过程中禁用按钮
e.prop("disabled", true);
$.post("/wp-admin/admin-ajax.php", {
action: "puock_like",
um_id: t,
um_action: "like"
}, function(t) {
0 === t.e ? (e.find("span").html(t.d),
e.addClass("bg-primary text-light")) : a.toast(t.t)
}, "json").fail(function() {
a.toast("点赞异常", TYPE_DANGER)
}).always(function() {
// 无论请求成功还是失败,总是重新启用按钮
e.prop("disabled", false);
});
} else {
a.toast("太多请求,开始节流", TYPE_DANGER);
}
});
}
}
确实是有这个问题,就算已经点赞了也会向后端请求验证是否已经点赞,连续点击的话会造成cpu占用增大,我加了个节流函数
{ key: "eventSendPostLike", value: function() { var a = this; var lastClickTime = 0; // 上次点击的时间 var throttleTime = 2000; // 节流时间为2000毫秒 $(document).on("click", "#post-like", function(t) { var currentTime = new Date().getTime(); // 获取当前时间 // 如果时间差大于节流时间,则发送请求 if (currentTime - lastClickTime >= throttleTime) { lastClickTime = currentTime; // 更新上次点击时间 var e = $(a.ct(t)), t = e.attr("data-id"); // 在请求过程中禁用按钮 e.prop("disabled", true); $.post("/wp-admin/admin-ajax.php", { action: "puock_like", um_id: t, um_action: "like" }, function(t) { 0 === t.e ? (e.find("span").html(t.d), e.addClass("bg-primary text-light")) : a.toast(t.t) }, "json").fail(function() { a.toast("点赞异常", TYPE_DANGER) }).always(function() { // 无论请求成功还是失败,总是重新启用按钮 e.prop("disabled", false); }); } else { a.toast("太多请求,开始节流", TYPE_DANGER); } }); } }
大佬,我需要在哪里添加这个代码实现节流
打开f12后,页面点赞一次向服务器发送一次post请求,都被服务器处理占用服务器资源导致正常用户无法访问,其他按钮没有这个问题
我很无聊的试了一下,只要三个设备一起点15秒左右。我那个2核心的小肉鸡就宕机了
打开f12后,页面点赞一次向服务器发送一次post请求,都被服务器处理占用服务器资源导致正常用户无法访问,其他按钮没有这个问题
我很无聊的试了一下,只要三个设备一起点15秒左右。我那个2核心的小肉鸡就宕机了
你可以全局搜索一下 key: "eventSendPostLike"
,看这个文本在哪
v2.8.6会优化此功能,感谢 @oliverkirk-sudo 提供的方向