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

8.7 KiB
Raw Blame History

功能更新:自定义并发数量 (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

修改内容:

// 从固定值改为从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通过代码设置

// 在浏览器控制台
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
原因: 服务器压力小,可以最快速度执行
适用: 凌晨定时任务

动态调整策略

// 根据时间动态调整
早高峰 (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存储

// 存储键
localStorage.setItem('maxConcurrency', '5')

// 读取默认5
parseInt(localStorage.getItem('maxConcurrency') || '5')

响应式更新

// maxConcurrency是响应式ref
const maxConcurrency = ref(5)

// UI滑块绑定
v-model:value="batchStore.maxConcurrency"

// 实时更新
@update:value="handleConcurrencyChange"

并发控制逻辑

// 填充执行队列最多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个同时执行

📈 性能监控

查看实际并发情况

// 浏览器控制台
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 - 连接管理优化