Files
xyzw_web_helper/MD说明文件夹/功能更新-自定义并发数.md

367 lines
8.7 KiB
Markdown
Raw Normal View History

2025-10-17 20:56:50 +08:00
# 功能更新:自定义并发数量 (1-6)
## 📋 更新说明
**用户需求**希望并发数量可以自定义支持1-6个并发。
**更新内容**
- ✅ 并发数从固定5个改为可自定义1-6个
- ✅ 添加滑块UI控件直观调整并发数
- ✅ 实时保存到localStorage刷新后保持设置
- ✅ 显示当前并发数标签
---
## 🎯 功能特点
### 1. 灵活可调
```
1个并发: 逐个执行,适合网络不稳定或服务器压力大的情况
2个并发: 保守执行,降低风险
3个并发: 平衡速度和稳定性
4个并发: 较快速度
5个并发: 默认推荐,平衡最佳 ⭐
6个并发: 最快速度,适合网络好且服务器稳定的情况
```
### 2. 实时调整
- ✅ 滑块拖动即可调整
- ✅ 显示刻度标记1-6
- ✅ 实时保存配置
- ✅ 下次执行自动应用
### 3. 智能限制
- ✅ 执行中禁止修改(避免冲突)
- ✅ 范围限制1-6防止设置不合理的值
- ✅ 显示当前并发数标签
---
## 🎨 UI界面
### 批量任务面板
```
╔═════════════════════════════════════════════╗
║ 批量自动化任务 并发数: 5 ║
╠═════════════════════════════════════════════╣
║ 选择任务模板: 并发数量: ║
║ [完整套餐 ▼] 1 - ●----- 6 ║
║ ↑ 滑块控件 ║
╚═════════════════════════════════════════════╝
```
### 并发数显示
- 右上角标签:`并发数: 5` (绿色徽章)
- 滑块下方实时显示当前值
- 拖动滑块立即更新
---
## 🔧 修改的文件
### 1. 核心Store
**文件**: `src/stores/batchTaskStore.js`
**修改内容**:
```javascript
// 从固定值改为从localStorage读取
const maxConcurrency = ref(
parseInt(localStorage.getItem('maxConcurrency') || '5')
)
// 新增设置方法
const setMaxConcurrency = (count) => {
if (count < 1 || count > 6) {
console.warn('⚠️ 并发数必须在1-6之间')
return
}
maxConcurrency.value = count
localStorage.setItem('maxConcurrency', count.toString())
console.log(`⚙️ 并发数已设置为: ${count}`)
}
```
### 2. UI组件
**文件**: `src/components/BatchTaskPanel.vue`
**新增UI**:
- 并发数标签显示
- 滑块控件NSlider
- 刻度标记1-6
- 修改提示消息
---
## 🚀 使用方法
### 方法1通过滑块调整
1. 打开Token管理页面 (`/tokens`)
2. 在批量任务面板找到"并发数量"滑块
3. 拖动滑块到想要的数值1-6
4. 自动保存,立即生效
### 方法2通过代码设置
```javascript
// 在浏览器控制台
import { useBatchTaskStore } from '@/stores/batchTaskStore'
const batchStore = useBatchTaskStore()
// 设置并发数为3
batchStore.setMaxConcurrency(3)
// 查看当前并发数
console.log(batchStore.maxConcurrency) // 输出: 3
```
---
## 📊 不同并发数的对比
### 性能对比10个Token每个4个任务
| 并发数 | 预计耗时 | 服务器压力 | 推荐场景 |
|--------|---------|-----------|---------|
| 1 | ~40秒 | 最低 ⭐ | 网络不稳定、服务器敏感 |
| 2 | ~20秒 | 低 | 保守执行 |
| 3 | ~14秒 | 中低 | 一般稳定网络 |
| 4 | ~10秒 | 中 | 较好网络环境 |
| 5 | ~8秒 | 中高 ⭐ | 默认推荐 |
| 6 | ~7秒 | 高 | 网络极佳、服务器稳定 |
**计算公式**:
```
理论耗时 = (Token数 ÷ 并发数) × 单Token耗时
实际耗时 = 理论耗时 + 网络延迟 + 任务间隔
```
---
## 💡 使用建议
### 推荐配置
#### 场景1网络不稳定
```
并发数: 1-2
原因: 减少网络拥堵,提高成功率
适用: 移动网络、公共WiFi
```
#### 场景2服务器高峰期
```
并发数: 2-3
原因: 降低服务器压力,避免被限流
适用: 游戏更新后、活动期间
```
#### 场景3日常使用
```
并发数: 5 ⭐ (默认)
原因: 平衡速度和稳定性
适用: 大部分情况
```
#### 场景4深夜/凌晨
```
并发数: 6
原因: 服务器压力小,可以最快速度执行
适用: 凌晨定时任务
```
### 动态调整策略
```javascript
// 根据时间动态调整
早高峰 (7-9点): 并发数 2-3
工作日白天: 并发数 3-4
晚高峰 (18-21点): 并发数 2-3
深夜 (23-6点): 并发数 5-6
周末全天: 并发数 4-5
```
---
## 🔍 执行日志示例
### 并发数为1
```
🚀 开始批量执行任务
📋 Token数量: 5
📋 任务列表: 4个任务
⚙️ 并发数: 1
🎯 开始执行 Token: 主号战士
✅ Token完成: 主号战士
🔌 断开WebSocket连接: 主号战士
🎯 开始执行 Token: 小号法师
✅ Token完成: 小号法师
🔌 断开WebSocket连接: 小号法师
...(逐个执行)
```
### 并发数为5
```
🚀 开始批量执行任务
📋 Token数量: 5
📋 任务列表: 4个任务
⚙️ 并发数: 5
🎯 开始执行 Token: 主号战士
🎯 开始执行 Token: 小号法师
🎯 开始执行 Token: 练级号
🎯 开始执行 Token: 打金号
🎯 开始执行 Token: 测试号
✅ Token完成: 主号战士
✅ Token完成: 小号法师
✅ Token完成: 练级号
✅ Token完成: 打金号
✅ Token完成: 测试号
...5个同时执行
```
---
## ⚙️ 技术细节
### localStorage存储
```javascript
// 存储键
localStorage.setItem('maxConcurrency', '5')
// 读取默认5
parseInt(localStorage.getItem('maxConcurrency') || '5')
```
### 响应式更新
```javascript
// maxConcurrency是响应式ref
const maxConcurrency = ref(5)
// UI滑块绑定
v-model:value="batchStore.maxConcurrency"
// 实时更新
@update:value="handleConcurrencyChange"
```
### 并发控制逻辑
```javascript
// 填充执行队列最多maxConcurrency个
while (executing.length < maxConcurrency.value && queue.length > 0) {
const tokenId = queue.shift()
const promise = executeTokenTasks(tokenId, tasks)
executing.push(promise)
}
// 等待至少一个完成
if (executing.length > 0) {
await Promise.race(executing)
}
```
---
## 🎯 实际应用示例
### 示例1快速测试1个并发
```
场景: 测试新功能是否正常
设置: 并发数 = 1
时长: 较慢但便于观察每个Token的执行情况
```
### 示例2日常任务5个并发
```
场景: 每天早晨执行日常任务
设置: 并发数 = 5默认
时长: 10个Token约16秒
```
### 示例3深夜定时6个并发
```
场景: 凌晨3点定时执行完整套餐
设置: 并发数 = 6最快
时长: 10个Token约14秒
```
### 示例4网络差2个并发
```
场景: 移动网络4G环境
设置: 并发数 = 2
时长: 较慢,但成功率更高
```
---
## ⚠️ 注意事项
### 1. 执行中不可修改
- 批量任务执行中,滑块会被禁用
- 需要等待当前批次完成后才能修改
- 避免执行过程中改变并发策略导致混乱
### 2. 合理设置
- 并发数越大,服务器压力越大
- 可能触发服务器的限流机制
- 建议根据实际情况调整
### 3. 网络环境
- 网络不稳定时建议降低并发数
- 延迟高的网络适合1-3并发
- 本地网络可以使用5-6并发
### 4. Token数量
- Token数量少于并发数时实际并发 = Token数
- 例如3个Token并发设为5实际只有3个同时执行
---
## 📈 性能监控
### 查看实际并发情况
```javascript
// 浏览器控制台
import { useBatchTaskStore } from '@/stores/batchTaskStore'
const batchStore = useBatchTaskStore()
// 查看当前并发数设置
console.log('设置并发数:', batchStore.maxConcurrency)
// 查看实际执行中的Token数
console.log('执行中Token:', batchStore.executingTokens.size)
// 查看执行统计
console.log('执行统计:', batchStore.executionStats)
```
---
## 🎉 总结
本次更新让并发数量变得**灵活可控**
### 核心特性
-**自定义范围**: 1-6个并发任意选择
-**滑块UI**: 直观易用的调整界面
-**持久化**: 自动保存,下次打开仍然生效
-**智能限制**: 执行中禁止修改,防止冲突
### 实用价值
-**灵活调整**: 根据网络和服务器情况动态调整
-**优化速度**: 网络好时提高并发,加快执行
-**提高稳定性**: 网络差时降低并发,提升成功率
-**个性化**: 每个用户可以根据自己的需求设置
**现在你可以完全掌控批量任务的执行速度了!** 🚀
---
## 📚 相关文档
- `批量任务使用说明.md` - 完整使用教程
- `批量任务功能实现总结.md` - 技术实现详解
- `优化-自动断开连接.md` - 连接管理优化