乐于分享
好东西不私藏

APP预训练

APP预训练

做风控挖掘时间长了,难免会觉得传统特征工程越做越枯燥。

翻来覆去都是各类统计指标、分位数切割、行为频次计数、聚合衍生特征……每一个特征单独看都逻辑自洽,但堆砌组合在一起时,总觉得有些割裂,缺少对用户真实行为的理解与感知。

后来小编慢慢换了一种思路:不再人工拆解、强行提炼碎片化行为表征,而是直接读懂完整行为序列本身。

举个实际业务例子:小编最近在做海外风控数据挖掘,海外业务高度依赖自有生态数据,外部三方在小编负责的国家覆盖低且重要性不高(突然觉得还是国内好呀,不知道发达国家数据怎么样,知道的小伙伴可以跟小编讲讲)。

只能深度挖掘内部数据价值 如交易流水、APPlist、SMS、设备行为日志、埋点数据,都是我们核心的挖掘抓手。

今天咱们先聚焦最常用的 AppList 展开聊聊。之前分享过简易的 Encoder+CLS 建模方案。

本篇进一步升级,详解BERT 序列预训练在 AppList 上的落地用法,后续还会分享大模型 LLM 在风控行为建模的应用。

今天咱们就把讲讲 把用户手机上的 App 序列,当成一段文本来处理,然后用类似 BERT 的方式做预训练,让模型自己去学序列里的规律。


整个流程是什么样的

事情大概分这么几步:

  1. 原始数据是每个用户的 App 启动序列,已经被编码成整数,一行一条记录。

  2. 拿到这个之后,先做词表裁剪,把低频的 App 过滤掉;

  3. 再构建一个类 BERT 的小模型;用 MLM 方式做预训练;

  4. 最后把模型保存下来,等着接到下游任务里。

这套流程本身其实并不复杂,但里面有几个细节值得展开说。


词表:不是建越大越好

第一件事是整理词表,applist的词表是 App ID。

小编的做法是统计所有用户每个 App 出现的次数,按频率编号。这里还是有很多要注意的点,大家根据自己家的业务及算力情况调整吧。

keep = [(tid, c) for tid, c in cnt.items()
if tid >= SPECIAL_TOKEN_NUM and c >= min_count]
keep.sort(key=lambda x: -x[1])

比如要过滤掉一些低频的app,因为低频词没有足够的样本让模型学到有意义的表示,留着只会占 embedding 空间,还会引入噪音。

另一个点是词表不能用OOT来建。小编以前做预训练模型时并不会划分OOT,这次小编问了大模型需要划分OOT来避免数据穿越吗?

大模型的回答是 如果把盲测的数据也算进来,那些只在未来才出现的新 App,会被提前收录进词表。模型训练时就隐式地"见过"了未来的信息,线下指标会虚高,但上线之后大概率打脸。

算了,先听大模型的吧。

词表建好之后,再统一把训练集和盲测集都映射过去,遇到不在词表里的 token 就标记为 [UNK]

app2id, vocab = build_vocab_from_sequences(train_df, ...)
train_seqs = remap_sequences(train_df['app_name_encoded'].tolist(), app2id)
oot_seqs   = remap_sequences(oot_df['app_name_encoded'].tolist(),   app2id)

检查一下 训练集和盲测集 UNK 的占比:

如果 OOT 的 UNK 比例明显高于 train,说明这段时间内 App 生态变化不小,有大量新的应用出现。这是数据漂移的一个信号,后续接下游任务时需要留意。



模型结构:一个精简版 BERT

模型不大,8M左右的参数量,整体是 embedding 层 + Transformer encoder + MLM Head。

embedding 层:两个维度,一个投影

每个 token 进来,先查两张vocab 和 position 表,这和 BERT 原版的做法是一样的。position embedding 的作用是告诉模型顺序,我们之前说过 Transformer 本身是并行处理所有位置的,它看不到谁前谁后,位置信息要显式注入进去。

这里有一个小设计:word embedding 和 position embedding 的维度是 128,但 Transformer 内部的 hidden size 是 256,中间用一个线性层做投影:

self.proj = nn.Linear(config.emb_size, config.hidden_size)
# forward 里:
emb = self.word_embeddings(input_ids) + self.position_embeddings(pos_ids)
emb = self.LayerNorm(emb)
emb = self.dropout(emb)
if self.proj isnotNone:
    emb = self.proj(emb)  # 128 → 256

为什么这么拆?因为 embedding 矩阵的参数量是 vocab_size × emb_size。词表如果有几千个 App,emb_size 从 256 压到 128,embedding 层的参数直接少一半。而 Transformer 的 FFN 和 attention 计算复杂度跟 hidden size 有关 ,但跟 vocab_size 无关,可以单独调大一点来保住表达能力并且降低算力。

是为了解耦 词表规模 和 模型宽度 这两件原本被绑死的事情,在词表大、模型不能太重的场景下比较实用。

Transformer encoder:注意力在做什么

encoder 直接用了 HuggingFace 的 BertEncoder,4 层,每层 4 个注意力头,FFN 宽度 1024。参数量不大,但值得把里面的机制说清楚。

Self-Attention 是 Transformer 的核心,它做的事情是:对序列里的每个位置,去看其他所有位置,判断哪些位置的信息对当前位置有用,然后加权聚合过来。

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

Multi-Head 的意思是把这个过程并行做多次,每次用不同的线性变换,最后把多个结果拼起来再投影回来。直觉上是:不同的头可以关注不同类型的关系,有的头可能在看相邻 App 的共现,有的头可能在看序列开头和当前位置的关联,各自学各自的,最后合起来。

Attention 计算完之后还要过 padding mask。因为序列长度不一样,短的序列会在末尾补 [PAD],这些位置不应该参与计算。mask 的做法是把 PAD 位置的 attention score 填成一个极大的负数,softmax 之后就趋近于 0,相当于屏蔽掉:

ext = attention_mask[:, NoneNone, :].to(dtype=dtype)
ext = (1.0 - ext) * torch.finfo(dtype).min

attention_mask 是一个 0/1 矩阵,PAD 位置是 0,有效位置是 1。这里做了一个变换:有效位置变成 0(不加惩罚),PAD 位置变成 -inf(加极大惩罚),然后传给 BertEncoder 在每层 attention 里叠加到 score 上。

每层 Transformer 除了 attention,还有一个 FFN(前馈网络),就是两个线性变换夹一个激活函数,hidden_size → 1024 → hidden_size,作用是在 attention 聚合了上下文之后,对每个位置的表示做进一步的非线性变换。每个子层后面都跟着残差连接和 LayerNorm,保证梯度流通,也让训练更稳定。

MLM Head:为什么要共享权重

encoder 出来之后,每个位置都有一个hidden state。MLM Head 的任务是:拿被 mask 掉的那些位置的 hidden state,预测原来的 token 是什么。

结构是先从 hidden_size 投影回 emb_size,过一个 GELU 激活和 LayerNorm,然后和 word embedding 矩阵做内积:

x = self.mlm_dense(seq_out)   # 256 → 128
x = self.mlm_act(x)           # GELU
x = self.mlm_norm(x)          # LayerNorm
emb_w = self.app_embeddings.word_embeddings.weight
logits_active = x_flat @ emb_w.t() + self.mlm_bias

最后这一步 @ emb_w.t() 是关键——它直接复用了 word embedding 层的权重,而不是再接一个独立的线性层。这叫权重共享。

为什么这么做?直觉上,word embedding 矩阵的第 i 行,代表第 i 个 token 是什么样的。预测 token 的时候,其实是在问:hidden state 和哪个 token 的表征最接近?

用内积来度量相似度,然后 softmax 选概率最高的那个,逻辑上是自洽的。

更重要的是,这个设计让两件事耦合在一起:embedding 层要学好每个 token 的表示,才能让 MLM Head 预测得准;反过来,MLM Head 预测得准,梯度也会返回来继续改善 embedding。两边互相约束,比分开训练更紧凑,参数也少一个大矩阵。

损失只算被 mask 的位置,其他位置 label 设成 -100,PyTorch 的 cross_entropy 会自动忽略:

active = labels.view(-1) != -100
x_flat = x.view(-1, x.size(-1))[active]
logits_active = x_flat @ emb_w.t() + self.mlm_bias
labels_active = labels.view(-1)[active]
loss = nn.functional.cross_entropy(logits_active, labels_active)

先把 mask 位置筛出来,只对这些位置算 logits 和 loss,而不是全序列都算一遍再过滤。这样在序列长、mask 比例只有 15% 的情况下,计算量能省不少。

整个模型加起来,参数量大概在几百万量级,放在 App 行为序列这个场景里算是合适的体量。不需要很大,够用就行。


训练目标:完形填空

预训练的核心是 MLM,思路来自 BERT,原理很朴素:

把序列里随机 15% 的 token 遮掉,让模型根据上下文去猜原来是什么。

具体实现上,被选中的 token 会按比例做三种处理:80% 替换成 [MASK],10% 随机换成另一个 token,剩下 10% 保持原样不动。

if random.random() < self.mlm_prob:
    labels[i] = tokens[i]
    r = random.random()
if r < 0.8:
        input_ids[i] = self.mask_id
elif r < 0.9:
        input_ids[i] = random.randint(self.random_token_start, self.vocab_size - 1)

为什么不全部换成 [MASK]?因为如果全遮,模型会学到一个捷径:只有看到 [MASK] 才需要认真预测,其他位置直接摆烂。加入随机替换和保持原样,是在强迫模型对每个位置都保持警惕,不知道哪个位置的 token 是真实的,哪个是被动过手脚的。

这个训练过程,本质上是在让模型学习:在这种行为序列里,什么 App 和什么 App 经常一起出现,什么样的序列模式是正常的,什么位置的 App 可以互相替代。这些知识,之后都会编码进 embedding 里。


训练时的几个工程细节

显存是这种单卡场景下绕不开的话题(求资源)。这里用了两个方式来让 batch 尽量大一点:

一个是梯度累积:

PER_DEV_BS = 64
GRAD_ACCUM = 8

每次只跑 64 条,但累积 8 步之后再更新参数,效果等价于 batch size 是 512,但显存峰值只有 batch 64 的水位。

另一个是 gradient checkpointing。正常的反向传播需要把前向传播时所有层的中间激活值都保存下来,显存占用和层数成正比。开了 gradient checkpointing 之后,中间激活不存,反向传播时重新算一遍,用计算换显存,代价是训练速度大约慢 20%-30%,但能跑更大的 batch 或者更深的模型。

gradient_checkpointing=True,
fp16=torch.cuda.is_available(),

混合精度(fp16)也开着,大约能省一半显存,在兼容性好的卡上几乎没有精度损失。


在预训练阶段其实不用太在意MLM accuracy 的绝对值高不高,毕竟这不是最终任务。咱们更关心的是:学出来的 embedding 有没有意义,接到下游任务之后有没有帮助。


总结一下

这整件事,核心思路是把用户行为序列类比成自然语言,借用 NLP 里成熟的预训练框架,让模型在无监督的前提下学习行为规律,再把学到的表示用于下游风控任务。

实现上没有太多新东西,但做对了几个容易忽略的细节,为了资源改了一点算法。这些东西不复杂,但少了哪个,效果好不好都不好说,更不知道哪里出了问题。

模型这个版本只是个起点。预训练结束之后,embedding 能不能在逾期预测这类有CLS模型上真正发挥作用,要等接上下游之后才能看到。

这个其实咱们讲过,大家自己翻翻吧。

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