($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('H:i');
$s = "";
return $s;
}
// form_date('start', '2018-07-05') 为空则当前日期
function form_date($name, $value = 0, $width = FALSE)
{
$style = '';
if (FALSE !== $width) {
is_numeric($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('Y-m-d');
$s = "";
return $s;
}
/**用法
*
* echo form_radio_yes_no('radio1', 0);
* echo form_checkbox('aaa', array('无', '有'), 0);
*
* echo form_radio_yes_no('aaa', 0);
* echo form_radio('aaa', array('无', '有'), 0);
* echo form_radio('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'b');
*
* echo form_select('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'a');
*/
?>组保留的标签 余下为需要删除的标签
unset($oldtag[$key]);
}
}
}
if (!empty($oldtag)) {
$tagids = array();
foreach ($oldtag as $tagid => $tagname) {
$tagids[] = $tagid;
}
well_oldtag_delete($tagids, $tid);
}
$r = well_tag_process($tid, $fid, $create_tag, $tagarr);
return $r;
}
// 删除标签和绑定的主题
function well_oldtag_delete($tagids, $tid)
{
$pagesize = count($tagids);
$arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize);
$delete_tagids = array(); // 删除
$tagids = array();
$n = 0;
foreach ($arrlist as $val) {
++$n;
if (1 == $val['count']) {
// 只有一个主题
$delete_tagids[] = $val['tagid'];
} else {
$tagids[] = $val['tagid'];
}
}
!empty($delete_tagids) and well_tag_delete($delete_tagids);
$arlist = well_tag_thread_find_by_tid($tid, 1, $n);
if ($arlist) {
$ids = array();
foreach ($arlist as $val) $ids[] = $val['id'];
well_tag_thread_delete($ids);
}
!empty($tagids) and well_tag_update($tagids, array('count-' => 1));
}
// 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签
function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array())
{
if (empty($tid)) return '';
// 新标签处理入库
if ($new_tags) {
$threadarr = array();
$tagids = array();
$i = 0;
$size = 5;
$n = count($tagarr);
$n = $n > $size ? $size : $size - $n;
foreach ($new_tags as $name) {
++$i;
$name = trim($name);
$name = stripslashes($name);
$name = strip_tags($name);
$name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name);
$name = htmlspecialchars($name, ENT_QUOTES);
if ($name && $i <= $n) {
// 查询标签
$read = well_tag_read_name($name);
if ($read) {
// 存在 count+1
$tagids[] = $read['tagid'];
} else {
// 入库
$arr = array('name' => $name, 'count' => 1);
$tagid = well_tag_create($arr);
FALSE === $tagid and message(-1, lang('create_failed'));
$read = array('tagid' => $tagid, 'name' => $name);
}
$tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid);
$threadarr[] = $tag_thread;
$tagarr[$read['tagid']] = $read['name'];
}
}
!empty($threadarr) and tag_thread_big_insert($threadarr);
!empty($tagids) and well_tag_update($tagids, array('count+' => 1));
}
$json = empty($tagarr) ? '' : xn_json_encode($tagarr);
return $json;
}
?>return $r;
}
/**
* @param int $page 页数
* @param int $pagesize 每页显示数量
* @return mixed
*/
function link_find($page = 1, $pagesize = 100)
{
$arr = link__find($cond = array(), array('rank' => -1), $page, $pagesize);
return $arr;
}
/**
* @param $id
* @return bool 返回FALSE失败 TRUE成功
*/
function link_delete($id)
{
if (empty($id)) return FALSE;
$r = link__delete(array('id' => $id));
link_delete_cache();
return $r;
}
//--------------------------kv + cache--------------------------
/**
* @return mixed 返回全部友情链接
*/
function link_get($page = 1, $pagesize = 100)
{
$g_link = website_get('friends_link');
if (empty($g_link)) {
$g_link = link_find($page, $pagesize);
$g_link AND website_set('friends_link', $g_link);
}
return $g_link;
}
// delete kv and cache
function link_delete_cache()
{
website_set('friends_link', '');
return TRUE;
}
?> $v = implode(",", $v);
$temp[] = $v;
}
// 去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
// 再将拆开的数组重新组装
$output = array();
foreach ($temp as $k => $v) {
if ($stkeep) $k = $starr[$k];
if ($ndformat) {
$temparr = explode(",", $v);
foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval;
} else $output[$k] = explode(",", $v);
}
return $output;
}
// 合并二维数组 如重复 值以第一个数组值为准
function array2_merge($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array1 as $k => $v) {
isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]);
}
return $arr;
}
/*
* 对二维数组排序 两个数组必须有一个相同的键值
* $array1 需要排序数组
* $array2 按照该数组key排序
* */
function array2_sort_key($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array2 as $k => $v) {
if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) {
$arr[$v[$key]] = $array1[$v[$key]];
} else {
$arr[] = $v;
}
}
return $arr;
}
?>
TP-Link 路由器限速问题解决指南-软件玩家 - 软件改变生活!
TP-Link 路由器限速设置与排查详解
在家庭或办公室环境中,网络带宽管理变得尤为重要。有时为了保障核心设备的带宽,或限制某些设备的流量,我们需要对TP-Link路由器进行限速设置。但是限速过程中,遇到过慢速度、部分设备不能到底、设置失效等问题时,如何逐步排查并解决?本文将从多个角度深入剖析,帮助你实现合理的带宽调配。
一、理解TP-Link路由器限速的原理
TP-Link路由器中的带宽控制功能主要依靠流量管理模块实现。其核心方式通常包括:
- QoS(服务质量)设置,用于优先级排序与速度限制
- 带宽限制(Bandwidth Control),专门为特定设备或IP范围设置最大带宽
- 硬件资源限制,部分型号支持端口速率限制
合理配置这些功能不但可以保障核心业务正常,还能防止个别设备过度占用网络资源,影响整体速度体验。
二、访问路由器管理界面
要开启限速操作,首先需要登录TP-Link路由器的管理后台。一般步骤如下:
- 连接到路由器的局域网,确保你的设备在管理权限范围内
- 在浏览器地址栏输入默认网关地址(如:192.168.0.1或192.168.1.1),回车访问
- 输入管理员用户名和密码(默认为admin/admin或查看路由器背面标签)
- 进入“高级设置”或者“带宽控制”相关板块
三、配置带宽限制的具体步骤
不同型号、固件版本会略有差异,但大致流程类似:
| 操作步骤 |
操作细节 |
| 开启带宽控制功能 |
找到“带宽控制”或“QoS”设置开关,启用它 |
| 定义规则 |
- 目标设备:依据IP、MAC地址设定
- 上行/下行最大速度:填写数值(如:1Mbps、10Mbps)
|
| 保存设置 |
点击“应用”或“保存”按钮,确保配置生效 |
四、常见问题与排查措施
Q1:限速后网速仍然很快怎么办?
可能原因包括:设置未生效、规则优先级错误、设备缓存影响或其他网络优先级冲突。建议:
- 确认规则已正确保存,且目标设备的IP/MAC信息正确无误
- 重启路由器和目标设备,确保设置生效
- 检查QoS规则优先级,确保目标设备被正确控制
- 使用网络测速工具验证速度变化
Q2:限速规则对部分设备无效怎么办?
可能原因包括:设备使用VPN或代理、IP被误识别、规则冲突。排查方式:
- 手动确认设备的IP或MAC地址,确保规则锁定正确
- 关闭设备上的代理或VPN,验证效果
- 逐一禁用其他可能影响带宽的规则,确认是否存在冲突
Q3:为什么设置了限速后,其他设备速度变慢?
原因可能是整体带宽设置不合理或限制范围过大,导致资源无法充分充分利用。建议:
- 调整带宽参数,确保上限合理
- 避免过于严格的限制,留有一定余量
- 合理划分优先级,保障关键设备优先获取带宽
五、专业优化建议
在复杂网络环境下,单纯依赖基础限速功能可能不够灵活,可考虑高级措施:
- 启用带宽动态调节,基于网络负载调整速率
- 结合VLAN、QoS策略实现更细粒度控制
- 引入第三方路由器固件(如OpenWRT、Padavan)以解锁更多控制功能
另外,合理规划网络架构,确保重要设备有优先带宽,以及避免背后设备的流量堆积,会让整个网络的体验更为顺畅。
六、命令行和脚本管理(高级用户)
一些高端TP-Link设备支持SSH或Tel访问,允许用户通过命令行进行带宽管理。例如,使用Linux命令或脚本调用特殊的配置,进行自动化部署。具体做法需参考设备型号的开发者文档,不同产品支持不同的命令集。
在命令行模式下,用户可以手工设置iptables规则、策略路由等技术手段,实现更加精准的网络流量限制和管理。
表格:不同型号TP-Link路由器限速支持功能对比
| 型号 |
支持QoS |
支持带宽控制 |
硬件性能(Mbps) |
备注 |
| TL-WR886N |
支持 |
支持 |
300 |
适合基础家庭用户 |
| TL-R480T+ |
支持 |
支持 |
1000 |
企业级管理功能 |
| Archer AX10 |
支持 |
支持 |
1200 |
支持WiFi 6标准 |
提示:测试与验证策略
每次调整设置后,建议用Speedtest(网速测试工具)测量多设备状态下的实际速度数据。观察数值变化,确认配置的效果。同时,别忘了检查是否有后台应用或下载任务占用带宽,可能造成测试偏差。
本文标签:
设备带宽设置
发表评论