当前位置:首页>python>深度剖析:如何用Python构建一套DOTA2高分段玩家“绝活哥”挖掘系统

深度剖析:如何用Python构建一套DOTA2高分段玩家“绝活哥”挖掘系统

  • 2026-07-03 20:43:40
深度剖析:如何用Python构建一套DOTA2高分段玩家“绝活哥”挖掘系统

对爬虫 & 逆向 & 算法模型感兴趣的同学可以查看历史文章,私信作者一对一小班教学,学习详细案例和兼职接单渠道

1. 背景与需求

作为一名DOTA2老玩家和数据挖掘爱好者,我平时经常会看完美世界电竞App上的英雄胜率榜。但公开的数据往往只停留在表层:我们只能看到某个英雄整体胜率高,却很难知道在这个英雄的顶尖使用者(绝活哥)群体中,谁的含金量更高?

一个胜率100%但只玩了2场的玩家,显然不如一个打了100场胜率依然稳定在65%的玩家。同时,冠绝局的60%胜率和万古局的60%胜率,由于分段乘区的不同,其表现力也有天壤之别。

基于这个痛点,我决定自己造个轮子,开发一款带有GUI图形界面的数据采集与评估系统。核心需求如下:

  1. 自动化采集:对接完美世界App的底层API,按时间维度(如近2个月)批量拉取指定英雄的高分段玩家战绩。
  2. 多维指数建模:放弃单一的“胜率”指标,引入“总场次、胜率阶梯、最高打到的段位”等复合参数,建立一个“玩家质量指数(Player Quality Index)”。
  3. 高可用与防封:为了应对海量请求带来的IP封禁,系统需要内置动态代理池和断线重连机制。
  4. 桌面级体验:不能只写个黑框框脚本,要做成带有进度条、实时日志输出、支持随时打断的PyQt5桌面程序。

今天这篇文章,我不打算直接贴几千行的完整源码,而是挑出整个系统中最核心、也最容易踩坑的三个底层模块进行深度剖析。希望能给做爬虫、数据分析或是PyQt客户端开发的兄弟们提供一点思路。


2. 模块一:带有“直连降级与代理容错”的网络调度模块

做爬虫业务,最让人头疼的永远是反爬策略。完美世界App的API对单IP的并发请求是有严格限制的。如果为了省事全部走付费代理池,成本又太高。

因此,我设计了一个“先直连白嫖,受挫后自动切代理”的平滑降级方案。

defsafe_request(self, url, params):
    max_retries = 20
    use_proxy = False# 初始状态:不使用代理,直接裸连

for attempt in range(max_retries):
ifnot self.is_running:
returnNone# 响应UI层的随时中断指令

try:
# 动态获取代理,如果是直连阶段则为None
            proxies = get_dial_proxy() if use_proxy elseNone

            res = requests.get(
                url, params=params, headers=HEADERS,
                verify=False, timeout=10, proxies=proxies
            ).json()

            time.sleep(3# 降低请求频率,做个良好市民
return res

except Exception as e:
# 【关键逻辑】代理失效时的状态清洗
global cached_proxy
if use_proxy:
                cached_proxy = None# 丢弃坏IP,强制下次重新拉取

            self.log_signal.emit(f"⚠️ 请求失败 (尝试 {attempt + 1}/{max_retries}): {str(e)[:20]}")

# 策略:前2次失败当作偶发网络抖动,第3次开始强制走代理模式
if attempt >= 2:
                use_proxy = True
                self.log_signal.emit(f"🔁 触发风控,启用代理模式爬取")

            time.sleep(10# 给服务器喘息时间

returnNone

深入剖析:

  1. 状态隔离与重置:注意 cached_proxy = None 这一行。很多新手写代理爬虫,代理挂了之后还在死循环请求。这里一旦捕获异常且当前是代理模式,立刻清空全局代理缓存,确保下一次 get_dial_proxy() 能去接口拉取新的可用IP。
  2. 成本控制:if attempt >= 2: use_proxy = True。大部分情况下,慢速的直连是可以满足需求的。只有当直连被识别并拒绝服务(连续报错超过2次),才唤醒代理池。这不仅节省了代理API的调用次数,也提升了整体爬取速度(直连通常比普通代理快)。

3. 模块二:数据清洗与非线性“战力指数”算法模块

抓到数据只是第一步,如何洗出一个科学的“战力评分”才是灵魂所在。 传统的评分往往是简单的 胜率 * 场次,但这会导致场次多的“肝帝”即使胜率平庸也能霸榜。我需要的是一个非线性模型,给高胜率、高场次的玩家极大的正向反馈。

defcalculate_player_quality_index(win_count: int, lose_count: int, rank_type: str):
    total_matches = win_count + lose_count
    win_rate = win_count / total_matches if total_matches > 0else0.0

# 1. 基础段位乘区设定
defget_rank_mult(rank_str):
if"冠绝"in rank_str: return1.2
elif"超凡"in rank_str: return1.0
elif"万古"in rank_str: return0.8
return0.0
    rank_mult = get_rank_mult(rank_type)

# 2. 胜率阶梯式惩罚与奖励 (部分节选)
    base_win, extra_win = 0.00.0
if total_matches < 5or win_rate < 0.5:
        base_win = 0.0# 场次太少或胜率不过半,直接不给基础分
elif0.5 <= win_rate < 0.55:
        base_win = 800 * (win_rate - 0.5)
elif win_rate >= 0.59:
        base_win = min(85 + 300 * (win_rate - 0.59), 100.0)

# 【核心逻辑】动态胜率奖励机制:只有场次达标(>15)且胜率极高,才给额外海量加分
if total_matches >= 15:
# 省略了巨长的矩阵映射字典...
# 这里通过积分的方式,把0.6到1.0的胜率区间切片,越往上系数(coe)爆炸增长
            ranges = [(0.600.65, coe), (0.650.70, coe)...] 
            total = 0.0
for low, high, coe in ranges:
if win_rate > low:
                    total += (min(win_rate, high) - low) * 100 * coe
            extra_win = total

    final_win = base_win + extra_win
# 3. 几何平均数抹平极端值
    performance = math.sqrt((final_match + 1e-6) * (final_win + 1e-6))
return performance * rank_mult

深入剖析:这里借鉴了类似MMR系统的积分思想。

  1. 胜率的价值是非线性的:将胜率从50%打到55%很容易,但从75%打到80%极难。因此在代码中,我运用了分段函数计算 extra_win,对于胜率每突破一个5%的区间,赋予的权重是几何级增长的。
  2. 木桶效应的规避:最后计算总表现 performance 时,我使用了 math.sqrt(场次得分 * 胜率得分) 的几何平均数算法,而不是算术平均数。为什么?因为几何平均数能有效惩罚“偏科”。一个只有场次得分极高但胜率得分极低的人,相乘再开方后的数值,会远低于两项得分都很均衡的玩家。

4. 模块三:PyQt5异步线程与GUI通信模块

只要写过GUI界面的人都知道一个铁律:千万不要在主线程里做耗时操作(如网络请求),否则界面会立刻假死(Not Responding)。为了让进度条丝滑推进、日志实时打印,并且允许用户点击“⏹ 停止并导出”按钮打断任务,我们必须引入 QThread 和 pyqtSignal。

# 独立的工作线程,负责所有脏活累活
classScraperWorker(QThread):
# 定义强类型信号,用于跨线程穿透UI
    log_signal = pyqtSignal(str)
    progress_signal = pyqtSignal(int)
    finished_signal = pyqtSignal(pd.DataFrame)

def__init__(self, selected_heroes, time_limit_days):
        super().__init__()
        self.selected_heroes = selected_heroes
        self.time_limit_days = time_limit_days
        self.is_running = True# 软中断标志位

defrun(self):
# 爬虫主循环
for idx, hero in enumerate(self.selected_heroes):
ifnot self.is_running: break# 检查是否被用户主动kill

            self.log_signal.emit(f"⚡ 正在获取英雄: 【{hero['name']}】 数据...")

# ... 执行复杂的翻页和请求逻辑 ...

# 向主线程UI实时汇报进度
            current_progress = int(((idx + 1) / len(self.selected_heroes)) * 100)
            self.progress_signal.emit(current_progress)

# 爬虫结束,把清洗好的DataFrame推给UI层去保存
        df = pd.DataFrame(self.result_data)
        self.finished_signal.emit(df)

# 在MainWindow中的调用机制:
defstart_scraping(self):
    self.btn_start.setEnabled(False# 锁死开始按钮防抖
    self.worker = ScraperWorker(target_heroes, days)

# 将子线程的信号绑定到主线程的UI控件上
    self.worker.log_signal.connect(self.log_output.append)
    self.worker.progress_signal.connect(self.progress_bar.setValue)
    self.worker.finished_signal.connect(self.on_scraping_finished)

    self.worker.start()

深入剖析:

  1. 基于信号槽的生产者-消费者模式:QThread 相当于在后台挖矿的矿工,它没有任何权限去直接修改UI(强行修改会导致底层C++指针崩溃)。通过 pyqtSignal,子线程只负责“发射”数据,主线程监听到信号后,从容地更新TextEdit(日志)和ProgressBar(进度条)。
  2. 优雅的软中断:注意 self.is_running 这个变量。我在主界面的“停止按钮”事件中,并没有粗暴地调用 worker.terminate()(这会导致资源不释放、文件锁死)。而是通过修改 worker.is_running = False,让子线程在执行到下一次循环判断时,自己体面地退出,并将已抓取的部分数据通过 finished_signal 正常导出。

5. 项目难点与技术总结

回顾整个开发过程,除了前面提到的并发封禁、数据清洗和多线程通信,在实际联调阶段,最大的难点在于API接口翻页的边界判断

完美世界App的战绩接口,如果不带过滤条件,会把玩家几年前的匹配记录全拉出来。为了实现“仅统计近N个月高分段战绩”,我不得不在每一页的回调数据中对比 timeStamp。如果当前页出现了早于目标时间戳的数据,必须立刻设置 keep_fetching = False,主动切断后续的翻页请求。这一个小细节,把单人的处理时间从几十秒压缩到了两三秒,直接决定了整个系统的吞吐量。

总结:用Python做个能跑的爬虫很容易,但要把数据清洗成有业务价值的指标(PQI指数),再封装成一个具备容错机制和良好交互的桌面级应用,就需要考虑从网络层到表现层的一体化设计。

目前系统能够稳定跑通数据的拉取和清洗,后续如果精力允许,打算接入一些简单的大模型API,根据每个玩家出装习惯的变化曲线,自动生成一两句“绝活哥打法风格总结”。数据的尽头永远是挖掘背后的逻辑。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 11:06:38 HTTP/2.0 GET : https://f.mffb.com.cn/a/490051.html
  2. 运行时间 : 0.198577s [ 吞吐率:5.04req/s ] 内存消耗:4,636.12kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=4230a08d9b0ab70c9e6b2a68fce6a0ab
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000448s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000690s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000514s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.005097s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000609s ]
  6. SELECT * FROM `set` [ RunTime:0.010114s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000910s ]
  8. SELECT * FROM `article` WHERE `id` = 490051 LIMIT 1 [ RunTime:0.008667s ]
  9. UPDATE `article` SET `lasttime` = 1783134398 WHERE `id` = 490051 [ RunTime:0.004676s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001034s ]
  11. SELECT * FROM `article` WHERE `id` < 490051 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001386s ]
  12. SELECT * FROM `article` WHERE `id` > 490051 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.010194s ]
  13. SELECT * FROM `article` WHERE `id` < 490051 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.019804s ]
  14. SELECT * FROM `article` WHERE `id` < 490051 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.026067s ]
  15. SELECT * FROM `article` WHERE `id` < 490051 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.015216s ]
0.200265s