当前位置:首页>南京>南京市长江大桥祝您新春快乐

南京市长江大桥祝您新春快乐

  • 2026-04-04 08:12:17
南京市长江大桥祝您新春快乐
3.7 Tokenization

到目前为止,本章一再反复提及“token”一词,那么token到底是什么呢?又该如何翻译呢?

不同的领域,token有不同的含义,比如:令牌、标记、代币、通证、支付标记,等等。在AI语境下,token已演变为:模型输入序列中的最小可处理单元,是信息被编码、嵌入、注意力计算的基本原子,如图3-48所示。

图3-48 token与AI模型的关系

3-48中,AI模型是以Transformer结构为例。另外,token id与token是一对一的关系,是token的一个代指。可以看到,token(或token id)是AI模型的(原子)输入。

只是,token该如何翻译呢?AI领域,token一般翻译为“词元”,但是更多时候,大家采用的是token本身,不使用其中文翻译。

通过图3-48可以看大,人类输入的文本信息(Text),经过Tokenization,变成一个个token(id)以后,才能输入AI模型。Tokenization翻译为“分词”,不过有时候,大家也是直接使用其单词本身。

Tokenization就是将Text分解为Token的一套解决方案。我们看一个例子:

南京市长江大桥欢迎您

这句话该怎么分词?如下的分词方法,到底该选哪一种?

/////////

南京//长江/大桥/欢迎/

南京市/长江大桥/欢迎/

......

还是选“南京 市长 江大桥 欢迎 您”?

南京/市长/江大桥/欢迎/

我们再看一个例子,

Don't count your chickens before they hatch

这个又该如何分词?是不是直接按照空格分词就行了?是的,类似英语这样的单词间有空格的书写方式的,确实有一种冲动:按照空格分词,一个单词一个token。但是,这样的分词方法,有一个明显的缺点:单词/token太多了。牛津英语词典(Oxford English Dictionary)收录了60多万个条目,考虑到“walk/walks/walking/walked”只记作一个条目,那么按照空格分词,英语词表大小(Vocabulary Size)会超过100万(1000K个token)。但是,并不是说词表越大,模型效果越好,这需要一个折中。而当前主流大模型词汇表大小,一般是100K~200K。也就是说,按照空格分词,单从词表大小这一个维度而言,就不是个好主意。

那么到底该如何分词呢?乱花渐欲迷人眼,万花丛中一点红。在众多分词算法中,BPE算法可以说是非常经典、非常基础的存在——很多著名大模型都采用了BPE算法(及其扩展算法BBPE)。

3.7.1 BPE基本算法

BPE(Byte-Pair Encoding,字节对编码)算法,最早由Philip Gage于1994年2月在论文“A New Algorithm for Data Compression”中提出

2015年,Rico Sennrich等人将BPE首次引入了神经网络机器翻译领域。自此,BPE奠定了在AI领域的江湖地位。

BPE虽然在AI领域尤其是在大模型领域中举足轻重,但是它一开始的目标却只是一个数据压缩算法。不过这也正常,毕竟英语世界,按照字符分割token,则单词被切的稀碎,按照单词分割token,则词表有点太大,BPE则正好介于两者之间。所以,BPE和机器翻译乃至大模型的相遇,也算是天作之合。

下面我们就先以英文为例,介绍BPE算法。

理解BPE,有两个关键词非常重要,一个是“压缩”(来自于论文标题:A New Algorithm for Data Compression),另一个是“字节对”(来自于算法名称:Byte-PairEncoding)。

压缩一词好理解,那么是字节对呢。这就要从ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)说起。英文字母及其他字符,都有着对应的ASCII码,如表3-30所示。

表3-30 部分ASCII示意

二进制

十进制

十六进制

字符

说明

0000 0000

0

0x00

NUL(null)

空字符

0000 0001

1

0x01

SOH

标题开始

0100 0001

65

0x41

A

大写字母A

...

...

...

...

...

0101 1010

90

0x5A

Z

大写字母Z

...

...

...

...

...

0110 0001

97

0x61

a

小写字母a

...

...

...

...

...

0111 1010

122

0x7A

z

小写字母z

...

...

...

...

...

0111 1111

127

0x7F

DEL(delete)

删除

可以看到,每个ASCII码正好对应着八个比特,也就是一个字节。“字节”有了,“字节”对呢?以字符串S0ABABCABCD为例,如图3-49所示。

图3-49 字节对示意

可以看到,所谓字节对,就是相邻字符两两结对。图3-49中的字节对,如表3-31所示。

表3-31 字符串S0的字节对

字节对

数量

AB

3

BA

1

BC

2

CA

1

CD

1

有了字节对,就可以按照字节对压缩了。将数量最对的字节对是AB(一共有3对),用一个符号代替。可以想象,这个符号不能是S0中出现的字符,否则会出现二义性。泛化地讲,S0中可能出现ASCII码中任意一个字符,所以这个字符必须处于ASCII码之外。这是编程需要考虑的,这里我们暂时不纠结这么多,假设就用H替代AB,于是得到了S1。,如图3-50所示。

图3-50 字节对替换

这种替换,就是压缩(用两个字符替代一个字符),可以表达为,

同理对S1继续重复上述算法,就可以得到S2(假设HC替代为G),

S2再重复上述算法,就可以得到S3(假设GG替代为X

至此,BPE压缩算法迭代结束,因为再也无法压缩。

需要补充一点,BPE压缩算法迭代结束的条件有两个:或者是压无可压,或者是达到指定迭代步数。比如对于S0ABABCABCD,只迭代一步,那么就只能压缩到S1

有了BPE压缩算法,BPE的解压算法,则呼之欲出,只需要反向替换就可以了,

可以看到,BPE算法相对来说还是比较简单的,进一步,BPE分词算法,也没有那么复杂。

3.7.2 BPE分词算法

BPE分词算法,是以BPE算法为基础,但是各个模型厂商可能也会叠加了自己的细节算法。本小节只介绍通用算法。BPE分词算法,分为三大部分:token词表构建、token编码、token解码。

3.7.2.1 token词表构建

所谓BPE词表构建,就是将训练样本中一堆单词(记为text),基于BPE算法,分割成一系列的token。这一系列的token,组成词表(token_voc,vocabulary)。

在构建词表之前,首先要设定词表大小(记为N)。词表大小,与大模型的能力息息相关,也与大模型的训练、推理效率密切相关。如何确定词表大小,是另外一个深刻的话题,由于篇幅和主题原因,本小节不涉及。单纯从词表构建的角度来讲,词表大小与词表构建算法何时结束相关。

确定了词表大小之后,就可以进行初始化,也就是先预置一些token进去。不同的模型,有不同的实现方法。这里举一个经典例子,仅供参考,如代码3-1所示。

代码3-1词表初始化示例

伪代码表示

initial_vocab = {

基础ASCII95个可打印字符)

'a', 'b', 'c', ..., 'z',           # 26

'A', 'B', 'C', ..., 'Z',           # 26  

'0', '1', '2', ..., '9',           # 10

'!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', 

',', '-', '.', '/',  ':', ';', '<', '=', '>', '?', '@', 

'[', '\\', ']', '^', '_', '`', '{', '|', '}', '~',  # 33个标点/符号

' ', '\t', '\n',                    # 3个空白符

控制标记(Special Tokens

'<|endoftext|>', '<|pad|>', '<|unk|>'  # 3-10

}

总计:约 100-110 个初始token

初始化之后,就可以正式开启词表构建之旅。假设text = “low lower lowest dark darker darkest highhigher highest”

第一步根据空格分词(或者其它标点符号分词,本小节以“空格”分词为例),将训练样本分解为一个个单词列表(记为words)。需要强调的是,空格须归属于某个单词,或者放在单词的开头,或者放在单词的结尾。这里我们将空格归属于单词的结尾,并且为了易于阅读,我们将空格用“#”替代

有空格和没空格,核心的区别,在于字节对的构建,如图3-51所示。

图3-51 有空格与无空格的区别

可以看到,空格的作用就是阻断跨单词的字节对结合,以免不同的单词结合在一起,搞得“血肉模糊”。

第二步,基于上述原则,再结合BPE算法,就可构建出词表,如图3-52所示。

图3-52 BPE迭代分词

根据图3-52,就可以将words分解为一个个token。此时,有两种分解方法。一种是根据最后一个迭代分解,得到词表(token_voc),称为“最后迭代词表(Last Iteration Token Vocabulary,LITV

还有一种是根据每一次迭代的结果,得到词表(token_voc),称为“每次迭代词表(Every Iteration Token Vocabulary,EITV)”

说明BPE_T,是BPE Tokenize的缩写,表示“基于BPE算法,做Token分词”。

虽然LITV的词表会更小,但是其编码能力比不上EITV(由于篇幅原因,这里不再详述),所以现代主流LLM,选用的都是EITV。

虽然这个例子本身,按照EITV,其词表size比简单按照单词分词的size还要大,但是考虑到足够多的样本分词以后,BPE分词算法还是能够有效减少词表的size的,而且其本根原因是将

排列组合的乘法变成加法

比如,words里有九个单词,其实是三个词根(low,dark,high)和三个级别(原级、比较级、最高级)的排列组合:9 = 3 * 3。而BPE将它们变成了加法:6 = 3 + 3。考虑到原级不需要后缀,所以一共只需要五个token。

考虑到英语中形容词、副词的数量,这种乘法变加法的方法,对于减少词表容量的效果是非常大的。再考虑到英语中其他前缀、后缀的造词法(比如,unlock、unknown、unusual、quickly、weekly、actively),BPE的效果是惊人的。

3.7.2.2 词表构建的产物

无论是LITV还是EITV,分词的结果,显然易见的一个输出是词表,我们记为vocab.json,比如,

代码3-2vocab.json示例

{

"lo": 1000,      // token:tokeid

"low": 1001,        

"er": 1002,      

"est": 1003,     

......

}

这就是典型的词表形式,它记录了token和tokenid的关系。token由分词算法(比如BPE)获得,tokenid由分词算法自己分配,只要不重复就行,如图3-53所示。

图3-53 token与token id示意

除了词表(vocab.json),还有一个文件也很重要,我们记为merges.txt。该文件是BPE分词迭代过程的产物。每次迭代,merges.txt都严格按照时间顺序记录“字节对合并”的过程。

merges.txt虽然是分词迭代的产物,它的目的却是BPE编码的“控制器”。

3.7.2.3 token编码

merges.txt,看起来就是一个普通的文本文件,比如:

代码3-3merges.txt示例一

merges.txt示例一:

1. a b // 创建ab的规则(第1轮)

2. ab c // 创建abc的规则(第2轮)  

3. c d // 创建cd的规则(第3轮)

但是,merges.txt是BPE算法中用于指导编码(Encoding)阶段的有序合并规则列表,它是一个线性有序序列(Ordered Sequence),记为

其中每个元素mi是一个二元组(Bigram):

表示:在当前序列中,当且仅当tlefttright相邻且未被其他合并隔离时,将它们合并为新的符号单元。

BPE根据merges.txt进行编码,其基本算法为:

1)严格全序:mi的索引i定义了应用优先级,i<j意味着mi必须在mj之前尝试

2)贪心回退:每执行一次合并后,扫描指针必须重置到m1(第一行)重新开始

这么说,有点抽象,我们举个例子。假设,要编码“abcd”,那么按照“merges.txt示例一”,则编码为(具体编码过程从略,您可以自行推导),

如果merges.txt是另外的样子,

代码3-4merges.txt示例二

merges.txt示例二:

1.a b      // 创建ab的规则(第1轮)

2.c d      // 创建cd的规则(第2轮)

3. ab c     // 创建abc的规则(第3轮)

那么,“abcd”将会编码为,

可以看到,merges.txt通过严格的行号顺序定义了"在遇到多种可合并情况时,必须优先选择哪一种"的确定性策略,确保分词与编码时,同一文本产生完全一致的Token序列。

当然,处于某种需要,我们可以人为地调整merges.txt的顺序,我们也可以将merges.txt与vocab.json做一个合并,这里另外的话题,无须深究。

3.7.2.4 token解码

token的解码比较简单。因为编码时,每个token都有着对应的Token ID,那么解码时,直接根据Token ID查表即可。假设词表,如表3-32所示。

表3-3 token词表举例

Token ID

1

2

3

4

5

6

Token

I

love

空格

you

him

her

如果token编码为,

那么,解码后的text为,

是的,这世界上最浪漫的数字,除了1314,也有可能是13234。

3.7.3 BBPE

BBPE(Byte-level BPE)是BPE算法的字节级变体,被许多大模型采用。其核心思想是:将文本视为原始字节流进行子词分词。

BBPE与Unicode(Universal(通用)+ Code(编码),统一码)的概念密切相关。抱歉,由于篇幅和主题的原因,本小节不能深入展开Unicode的讲述,只能举个例子说明BBPE和BPE的区别。

“深度学习”为例,这四个字的UTF-8编码,如表3-33所示(UTF-8是Unicode的一种编码方式)。

表3-33 深度学习的UTF-8编码

中文

备注

UTF-8

230

183

177

229

186

166

229

173

166

228

185

160

三个字节

如果是BPE编码,它会将每个汉字所对应的UTF-8编码当作一个编码单元(心中认为是一个字节,虽然它们实际上是三个字节),按照BPE算法进行编码。

如果是BBPE编码,它会将每个汉字所对应的UTF-8编码中的每一个字节,按照BPE算法进行编码。

相对于BPE来说,BBPE最明显的优点,是在BPE编码时,不会出现OOV(Out-of-Vocabulary,未登录词)。比如,“”(dá),在词表构建时未出现过,也就是说vocabulary里没这个汉字的token。但是,在token编码时,最差的情况,也可以根据它的UTF-8编码(0x9F 0x98 0x85),编码成三个token:[0x9F, 0x98, 0x85]。

最新文章

随机文章

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