文档说明:
一定程度上可以规避非正常的人类行为,防止频繁执行SQL语句,瞬时多线程请求造成服务器负载压力。
涉及文件:
var/Widget/Archive.php
修改说明:
打开文件 var/Widget/Archive.php 搜索并找到以下代码(约2181行):
self::pluginHandle()->trigger($hasPushed)->search($keywords, $this);
在其下方添加如下代码:
$currentTime = time(); // 获取当前时间 $searchInterval = 60; // 自定义搜索间隔时间,单位:秒 $lastSearchTime = Cookie::get('last_search_time'); // 获取最后一次搜索时间 if ($lastSearchTime && ($currentTime - $lastSearchTime < $searchInterval)) { // 间隔时间内再次搜索,抛出提示 throw new WidgetException('搜索过于频繁'); } Cookie::set('last_search_time', $currentTime); // 更新上一次搜索时间
结语-不足之处:
为节约数据库空间,搜索计时器的值存储在Cookie中,这也就意味着可以通过某些手段跳过这一限制,不过聊胜于无。
版权申明:
本文由Lopwon于2024/10/6在【Lopwon Blog】首发分享,特此申明。