Files
xyzw_web_helper/MD说明文件夹/功能更新-自定义并发数.md
2025-10-17 20:56:50 +08:00

367 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 功能更新:自定义并发数量 (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` - 连接管理优化