乐于分享
好东西不私藏

统计论文精读(二)| TacticAI:一款专为足球战术设计的人工智能

统计论文精读(二)| TacticAI:一款专为足球战术设计的人工智能

TacticAI:一款专为足球战术设计的人工智能助手

原文内容如下:

论文内容简介

这篇论文是基于几何深度学习和图神经网络开发了一种可以用来预测以及设计战术的人工智能助手。

ps:当时学长分享这篇文章时,一是前几天刚好世界杯,比较应景哈哈,二是我们发现很多论文中用到图神经网络时节点都是固定不动的,本来以为这篇文章讨论的是节点会变化的情况,但往后看会发现其实不是,只是用了一帧的图像来进行分析,这也是之后可以有所创新的点,三是这篇文章来源于nature,含金量比较高,所以选择了这篇文章来分享。

论文各部分精读

分析之前,我们发现这篇文章的结构似乎有一点奇怪,通常的论文都是先摘要再背景然后方法最后结果及总结,但这篇文章把结果放在了方法前面,所以感觉有些奇怪,不过我们还是按照论文本身的顺序去进行分析精读,不随意更改位置~

摘要

摘要部分就是对文章大致流程进行了总结,首先,文章为了解决利用算法来解决识别对手球队核心战术并制定有效应对策略这一问题提出了本文的模型:TacticAI——一款与利物浦足球俱乐部领域专家紧密合作研发并验证的人工智能足球战术辅助系统;之后,点出文章主要的研究对象,即角球,这也是现有模型的一个缺陷;然后说明了该模型的创新之处,即既具有预测性又具有生成性,并说明了预测的主要内容;最后点明运用的方法,即几何深度学习,说明其价值。

模型整体架构

这部分内容中,前面是在说足球事业及现有技术,核心的部分是从第三段开始的,第三段提到,球员在场上执行既定战术的过程充满了不确定性,例如体能和天气、场地状况等等,但定位球(足球里比赛暂停后,重新开球时,球员固定在指定位置踢出的球)可以让球队更好的掌控局面,而在所有的定位球中,角球的战术价值最为突出,因此选择角球进行分析。

之后,提出了TacticAI的核心原理:首先,从原始球员的时空追踪数据中学习角球战术的有效表征,系统会将每一次角球场景转换为图结构数据,这是因为相较于球员在球场上的绝对距离,球员之间的互动更为关键,而图模型天然适用于刻画这类关系,因此在TacticAI中引入了图机器学习模型,来学习球员的高维隐层特征。

然后,提出了本模型的创新点,即引入了几何深度学习,这样可以使得模型学习到的球员特征能够适配球场的多种对称变换(后文方法中会详细说到)。

最后,介绍了一下TacticAI可以同时完成的多项预测任务,例如预判哪名球员会第一时间触球、本次角球是否会形成射门。同时,该系统也可作为战术检索工具,根据战术特征相似度检索历史相似角球场景;还能充当生成式推荐系统,通过调整球员站位与跑动速度,主动提升或降低射门的发生概率。


这里文中给出了一幅示意图,即图1,我们来分析一下这幅图的意思。


先看图A,图A为我们展示的是角球场景如何转为图结构,如何通过图神经网络消息传递更新节点特征。文中是选取了一帧图像为例,先转化为图结构,图中的蓝色圆形是一支球队的队员,粉色圆形是另一只球队的队员,绿色的连线代表关系为队友,灰色的连线代表关系为对手,之后进行信息提取,A中第三幅图的意思是,对球员之间的关系和处境进行了信息提取,即把球员当成节点(圆圈),球员之间的配合/对抗关系作为连线,比如A要防B,则A、B之间连线,箭头表示该球员收集了其他球员与他之间的关系信息,图中的h1上有一个指向自己的箭头,意思就是在收集完别的球员传递过来的信息之后,进行了自我状态的更新,即判断当前这个球员的处境。总的来说,其实可以看做一个消息传递层,分为:

1.发消息:把自己的状态发送给所有连线的球员

2.收消息:接受其他连线球员传递的状态消息

3.自我更新:刷新自身的特征数据

再来看图B,图B主要示意了对球场做四种变换的输入模型,最终实现了接球人预测、射门预测、球员站位调整三大功能。图B中的第一幅图就是选取了真实情况下的一帧图像,作为例子,第二幅图是对其进行了对称变换,即把一次角球数据全部转换为左右镜像和上下镜像四种版本,而这也是该模型的一个特点,即捕捉球场的对称性,把经过这四种翻转变换的相同战术判定为同一类,第三幅图也就是经过四次变换后输入到TacticAI里面的图神经网络示意图,上面可以提取到球员的节点及信息的传递路径,最后进行分析,实现三大功能。

实验结果

实验结果部分用到了两个表格,我们先来看看这两个表格说了些什么。

第一个表格是对该模型记录的数据进行了一个说明,也就是TacticAI实现三大功能时所收集的数据信息。

当时讲到这里的时候教授问了一个问题,因为结合后文会发现,我们要以向量形式进行数据输入,而这里,我们的模型所记录的数据既有矢量也有标量,该如何去输入?

实际上是进行了一个矢量与标量的拼接,但位置是固定的,从而以一个增广向量的方式进行数据输入。

第二个表格介绍的是在该问题中图模型的特征汇总,分别介绍了特征类型和解释。我们发现,在图模型中要用到的特征分别有球员位置,球员速度,身高体重,持球情况,双方关系(队友对手),接球者ID以及是否形成有威胁的射门,位置和速度分别都是以坐标形式表示的,对于速度,我们记录为,身高体重自然是标量,对于是否持球、球员关系及是否形成有威胁的射门部分,使用的是二值标签,即01编码的形式进行记录。

这里也是与表格一下方一样的问题及解答,通过拼接,从而用增广向量传入数据。

实验结果共分成了四部分去介绍,我们分别去看~

TacticAI基准性能测试

文章共收集数据7176条,均为角球数据,随机打乱后按照8:2分成了训练集和测试集,训练集用来给AI学习规律,测试集用来检验AI的学习成果。

数据输入部分,是以图结构作为输入,球员即为一个节点,每个节点包括表格一中所示的信息,其中,该研究仅选用了最简单的特征组合构建图模型,没有涉及到任何皮球的运动信息,用到的也就是图一中的A图,上文我们已经介绍过A图表意,不再赘述,只提一句,本文的实验中是分别对三大任务进行单独训练的,并使用同一套训练集和测试集划分方式,这样既可以单独测评各个模块的性能,也可验证模块间的协同效果。

基于几何深度学习的接球人与射门预测

这里需要注意的是,文中提到,由于真实情况具有极大的不确定性,因此对于TacticAI的预测,只要真实接球手出现在模型预判的前三名里,即为成功。

  • 接球人预测: 首先给出了接球人的定义,即角球开出后,第一名触碰到球的场上球员(全场共22位球员)。通过相同的特征集进行对比,之后直接给出了结果,最优的模型为深度图注意力网络,结合了群卷积(实际上就是球场的对称设计)实现几何深度学习,经训练后,模型前三的准确率有明显提高。并且,文中还采用了消融实验(通俗来讲,消融实验意思就是去掉某个部分,看性能是否出现变换),结果表明本文选用的基础网络架构和群卷积模块,均对接球人预测任务带来了显著的性能提升。

  • 射门预测: 对于射门预测,文中提出,若直接使用基础架构来预测,难度比较高,并通过分数(精确解与召回率的调和平均数,范围为,越大越好)进行了说明,得到的结果大概是在0.5左右,误差很大,因此,文中提出了一个条件概率公式,即

    等号左边的意思是在当前角球局面下最终的射门概率,等号右边是用该球员接触球的概率乘以接触球后射门的概率,通过这一改进公式,的值有了明显提高,大概在0.7左右,并且在叠加了群卷积的条件式之后有有所提高,由此说明该方案大幅提升了预测效果。

这里又给出了一幅图,即图二,我们一起分析一下图二什么意思。

图二是一幅隐层特征空间的可视化图像,区分了两种战术,即内旋角球和外旋角球战术,将相似战术自动聚类,从而去验证检索功能的有效性。所谓隐空间,就是AI给每位球员提炼出来的抽象特征,即高维隐向量。并且,图中对隐特征作了取平均值的处理,这个目的很显然,是为了把整支球队的战术表现浓缩成一个可以用来比较的单一点特征,也方便与T-SNE进行匹配。对于ABCD四幅图,我们分别来介绍。

图A是作为了一个参考样本,即基准战术,而图B是在隐空间中检索到的一个与A最接近的相似角球战术,二者均为外旋角球,图C则是内旋角球的一个参考样本,目的是与A形成对比,其中,图ABC均为进攻方,图D则为防守方取平均的结果图。

中间的部分,即t-SNEembeddings,是一种降维操作,使其生成一张二维的平面散点图,刻画了高维隐向量之间的距离,距离越近,说明两组角球的战术特征越相似。

  • 基于条件生成模型的战术精细化调整: 这部分主要就是对结果进行了一个对比,其中,我们固定一支球队的站位,仅对另一只球队的队员做出小幅度调整,最后来检验调整后的战术是否有效,不仅如此,文中还检验了用AI生成的角球战术和真实比赛情况的一个差异,依旧用分数来刻画,发现结果为0.5左右,即几乎是分不清的,同时通过各方评判以及数据证明,AI战术是有效的。文中也给出了结果示意图,如图三:其中,图A为原始场景,图B展示的是真实比赛中使用这套战术完成了射门,图D则是AI给出的调整方案,图C为调整前后接球概率的变化,不难发现,AI战术确实使接球率有所提高。

  • 行业专家案例实验: 这部分主要就是作者请了一些专家,分别来评判AI这三种功能的有效性,从模型生成战术的真实感、接球人预测结果的合理性、战术检索功能的有效性和战术调整方案的实用价值四方面进行评估,通过箱型图、条形图等来展示最后的结果,说明TactixAI模型的有效性。并且这里面还用到了一个技术,即滤波技术,意思就是从噪声的数据中提取有用的信号的方法,是为了去除噪声、提取趋势、填充缺失,从而便于结果分析的准确性。如图四:(这部分不难理解,图中结果也很清楚,不过多赘述)

讨论

这部分主要是总结了文章的核心成果、创新点和局限性,以及未来有可能拓展的点,这个我想最后再说一些,所以在这里不过多介绍~

研究方法

这里才是本文最重要的地方,但是作者放在了最后去讲,这部分详细介绍了TacticAI的整套几何深度学习流水线,我们对每部分逐一进行分析。

原始角球数据

这部分介绍了文中所用的原始数据,包含2020-2021、2021-2022、2022-2023赛季(截至2023年1月)英超联赛的共计9693条角球数据,包括每秒25帧的全场球员和球的位置信息,但实验仅截取角球发球瞬间的单帧数据作为模型输入(这也是前文为什么说本来以为是动态的节点,实际上还是静态的),还包括画面中所出现的类似于传球、射门、进球等行为,依旧比赛的各种信息,比如球场长宽和比赛日期等等。

图结构构建

这部分首先介绍了图整体的定义,即:

由两部分构成,分别是节点和边界,其中,对边界进行了约束,即:

也就是规定了边只能存在于节点两两之间。

之后给出了节点特征矩阵和边特征矩阵,对于节点特征矩阵,它的维度为,其中,为前面的节点,为球员的特征;

对于边特征矩阵依旧为前面的节点,表示两个球员之间的关系,即对手还是队友,在前面我们也提到,这个是用01去刻画的。

同时,文中还给出了一个参数,用来表示全局特征。

为了便于理解,在后面作者举出了一个例子,我们分别看一下例子中变量所代表的意思。 首先,表示任意一位球员,其中,也就是一个节点,里面包含了该球员的初始特征信息,比如身高体重等等;之后,代表两球员之间的关系,其中,即包含在边里面;最后,用来刻画全局特征,包括球赛时间、当前得分、球的位置等等,但不考虑距离。

然而,考虑到实际情况,有可能会出现一些球员的信息缺失的情况,对此,在该方法中,将所有缺失的球员的信息均设置为身高180cm,体重75kg,同时,将所有球员的身高体重除以100做归一化处理,对球员坐标做零均值(中心化)处理(简单来说就是把一组数据的整体值平移,让它们的平均值变为0),对于缺失的球场信息,也设定了默认的球场尺寸。

基准任务定义

文中规定三大任务共用同一套节点和边特征,仅全局特征存在差异。主要介绍了TacticAI模型如何处理角球数据:

  • 首先,模型先把所有球员的特征通过图神经网络转换成一个潜在节点特征矩阵中的每一行都对应着一个球员的战术特征向量,表示为

  • 然后,分为了两种任务类型,对于个体球员,直接用该球员的接一个分类器;对于全局事件,先把所有球员的相加聚合成,得到一个可以代表全队攻防状态的一个向量,再去做判断。

  • 最后说了一下训练与标签来源,是为了证明数据可靠。

图神经网络基础原理

这部分出现了很多公式,我们逐一介绍一下每个公式及其中参数的具体含义。(其中有一些公式是存在问题的,我们放在后面说)

这是一个递推公式,用来表示GNN的更新,其中下面以表格形式介绍一下公式中每一部分的含义:

数学符号
详细含义说明
经过第层GNN更新后,节点的隐特征嵌入向量
层输出、传入第层的节点自身特征向量
可学习节点更新函数(多层感知机MLP),用于更新节点表征
置换不变聚合算子,可选求和、均值、最大值等操作
中心节点的任意一个邻居节点
节点的一阶邻居节点集合
可学习消息传递函数(MLP),计算邻居传递给中心节点的消息
层邻居节点的特征向量
从邻居节点指向中心节点的边特征向量
整张图的全局图级特征向量

在第一个公式的基础上,第二个式子引入了注意力权重,目的是让不同的邻居不再等权聚合,而是按注意力系数加权求和,即图注意力网络GAT,其中,意思就是通过给注意力函数输入四类特征,可以得到一个输出的实数,作为注意力分数。

讲到这里的时候,教授提出了一个问题,就是这个维度是如何去变化的,实际上这两个式子在数学角度来看是存在问题的,比如第一个式子,你在第一次代入的时候是一个维度,但经过递推,维度发生了变化,那么下一次再代入的时候,就出现了问题,因为维度不再是式子中原定的所要求的维度了,所以这个递推公式无法继续严谨地推下去,但如果式子中将设定为会随着t而改变,这个式子或许会合理一些。


第三个式子是注意力权重的一个显式计算式,构造了权重矩阵,将分数转化为概率。下面以表格形式介绍各个部分的含义:

数学符号/表达式
完整含义解释
注意力打分函数,输出标量权重,表示邻居节点对中心节点的重要程度
层输入时,中心节点的特征向量
层输入时,邻居节点的特征向量
节点指向节点的边特征向量
整张图的全局特征向量
在中心节点的所有一阶邻居上做softmax归一化,使全部注意力权重之和等于1
中心节点的一阶邻居节点集合
可学习参数向量的转置,将隐层特征压缩为单个注意力标量分数
带泄露修正线性激活函数,引入非线性表达能力,避免神经元梯度消失
可学习权重矩阵,对中心节点的特征做线性变换
可学习权重矩阵,对邻居节点的特征做线性变换
可学习权重矩阵,对边特征做线性变换
可学习权重矩阵,对全局图特征做线性变换
四类特征分别线性变换后相加融合,得到注意力模块中间隐层特征

总的来说这部分的式子是以GATv2作为基础架构,引入了注意力机制来计算节点间的关联权重。

几何深度学习实现

这部分主要讲的是几何深度学习再足球的图神经网络里面的理论推导,目标在于让神经网络满足变换不变性,即。意思就是,输入赛场坐标、球员位置做对称变换,但模型输出的预测结果完全不变,如公式(5)所示:

通俗来说,就是把整个足球场进行水平镜像翻转或者左右互换两队球员坐标,球员速度x分量相反,但模型依旧给出一模一样的预测结果。

帧平均法

这里给出了一个实现不变性的方案公式:

这个公式的意思是,遍历所有的对称变换,把每个变换后的输入都送入网络预测,再把所有的预测结果取算术平均值。

其实这里是有缺点的,虽然实现方法比较简单,但这个方法极容易导致计算量暴涨,因为每次只用一种变换输入模型,且变换之间也没有交互,各个变换是独立预测再进行平均的,这也是未来有待改进的点。

下面以表格形式介绍一下公式中各部分含义:

公式组成部分
数学定义与含义
足球业务场景解释
经过帧平均处理、具备群不变性的最终模型预测输出
融合全部几何变换视角后的模型最终预测结果,不受球场镜像、翻转等坐标变换影响
图节点原始特征矩阵
各球员位置坐标、跑动速度、持球状态等球员个体特征
图边原始特征矩阵
球员两两之间距离、传球连线、攻防牵制关系等关联特征
变换群内所有独立几何变换的总数量
本文二面体群包含4种翻转、镜像操作,
遍历变换群中每一个变换算子逐项求和
依次对每种球场对称变换后的输入特征执行模型推理
群内单个几何变换算子,满足
单次坐标镜像/上下翻转操作,例如全队球员横坐标反向
经过变换后的节点特征矩阵
镜像/翻转后更新的球员位置、速度特征
经过变换后的边特征矩阵
坐标同步变换后,重新计算得到的球员间关联边特征
基础原始神经网络,为网络全部可训练参数,无内置对称约束
普通未做几何对称性改造的图神经网络GNN,单独一种变换输入会给出不同预测值

这里给出了等变性的约束定义,即对输入做了变换,层输出同步做一模一样的变换,从而输出特征随着输入同步变形。(上文说的不变性,意思是输入变换输出不变)

符号
含义
足球场景具体解释
自定义等变分组卷积层(GNN卷积算子)
嵌入对称性约束的图卷积层,网络中间层算子
网络第层节点隐特征矩阵
上一层卷积提取后的球员高维隐表征,非原始坐标
左侧
先做几何变换,再执行卷积
球员特征先镜像翻转,再送入卷积层提取特征
右侧
先执行卷积,再做几何变换
原始球员特征先卷积,卷积输出整体同步做相同镜像翻转
自逆变换性质
足球镜像翻转操作执行两次就恢复原始坐标,逆变换等于自身

之后,文中还给出了结构化卷积的实现公式,即分组等变卷积。这个公式也是进行了拼接处理,将所有变换分支做特征拼接融合。

符号
含义
足球场景具体解释
层等变卷积输出节点隐特征
经过对称融合更新后的本轮球员高维表征
群等变性映射算子
实现等变卷积完整计算流程的封装算子
特征拼接算子
原始隐特征、变换后隐特征在特征维度直接拼接合并
多分支特征融合聚合操作
所有变换分支卷积结果融合求和,区别于简单算术平均
拼接后送入等变卷积层
把原始视角、翻转视角球员特征合并后卷积提取联合特征
遍历全部变换分支融合
4种球场对称视角特征全部在卷积层内互相交互融合

讲到这里,当时学长给出了一个具体计算过程来进一步理解这个公式,我把它重新写了一下,如下:

这是对该公式的一个详细计算步骤,有助于更好的理解这个式子。

三大任务实现

方法部分的最后,作者给出了三个公式,用来分别实现三大功能任务和定义损失函数。

  • 接球预测公式:
符号/表达式
含义
足球场景具体解释
二面体群4种独立对称变换各自对应的节点隐特征
原图、水平翻转、竖直翻转、双向翻转4种球场视角下,同一球员经GATv2卷积得到的高维特征
变换群内全部几何变换的总数量
固定4种球场对称操作,用于归一化均值计算
单球员融合全部视角后的最终节点特征向量
消除坐标翻转带来的特征偏移,满足几何不变性,用于后续接球球员分类
  • 射门预测公式:

(这里面利用了等变性)

符号/表达式
含义
足球场景具体解释
球员遍历索引下标
场上参赛球员编号,全场固定22名球员(两队各11人)
个球员经公式(9)视角平均后的节点特征
单个球员完成多视角融合后的独立表征
遍历全部球员节点特征逐项求和
聚合全场所有球员的特征信息,整合完整赛场全局态势
球员总数归一化系数
消除球员数量尺度影响,得到尺度统一的全局特征向量
整张比赛图的图级全局特征向量
汇聚全场信息,送入二分类模型做射门事件发生概率预测
  • 损失函数定义:

(该函数为条件变分自编码器(CVAE) 的标准ELBO(证据下界)损失)

符号/表达式
含义
足球场景具体解释
CVAE完整损失函数(ELBO证据下界),解码器参数,编码器参数
用于训练球员位置/速度战术生成模型的目标损失
名球员原始观测输入向量
球员真实场上坐标、跑动速度观测数据
外部条件变量
期望达成的战术目标(如进攻得分、降低防守失球概率)
编码器推断的隐变量后验分布
根据真实球员状态+战术目标,推断低维隐嵌入分布
球员低维隐嵌入向量
压缩后的球员状态隐表征,本文服从多元高斯分布
期望算子
对隐变量后验分布做采样期望计算
负对数重构似然项(重构损失)
衡量解码器能否根据隐变量还原球员真实位置、速度,越小重构精度越高
生成解码器网络,为可训练参数
根据隐变量与战术条件,输出调整后的球员运动状态
KL散度,衡量两个概率分布差异
正则项,约束后验分布不能偏离预设先验分布
隐变量高斯先验分布
人为设定的标准多元高斯分布,规整隐空间
第一项整体
重构损失
保证生成的球员位置、速度贴近真实赛场观测数据
第二项整体
KL正则化项
约束隐嵌入分布稳定可控,保证战术生成采样可靠
消融实验

文章最后,提到了消融实验,在前文中我们提到过,通俗来说就是逐个剔除模型核心组件,验证该模型架构每一处设计的必要性,排除偶然效果,这里不再过多赘述。

文章的优缺点(个人观点)

本文的优点在于对图神经网络和几何深度学习的合理应用,并且创新地使四种不同对称变换下的结果统一化,在一定程度上进行了简化,并且给出了实现三种任务的具体公式,考虑较为全面。但是,个人认为本文提出的模型也是有一些缺陷的,首先,在验证实验结果部分,作者采用了专家评判的方法,这对于我们来说是不好实现的,其次,文中仅考虑了一帧图像,但如果像将其应用在多帧图像中,则会出现维数爆炸的问题,并且,在方法部分,作者提出的公式在数学角度是存在问题的,即维度混乱,无法进行递推,最后,这个模型并没有将各个场次联系起来,只能用在单场比赛上,具有很强的不确定性。

收获

(这篇搞了六个多小时哈哈)这篇文章研究的问题比较新,上次组会学长说中国好像还没有对足球预测展开过深入研究,可以作为未来的一个创新点,并且,这个模型也可以应用到类似于空气质量监测、共享单车等等领域,对于空气质量监测,也就是节点位置不变,对于共享单车,则是节点位置改变,但目前还没有看到做节点位置改变的论文,因为如果做节点位置改变,在本文里其实就是如果提取多帧图像,则有可能会出现维数爆炸等问题,这个问题的解决可以作为未来的创新方向,而且这类研究的不确定性太强,起到的也只是一个辅助作用,还有一个弊端就是目前的研究往往只能单独针对一场比赛,无法将多场比赛联系起来,这也会导致预测结果大打折扣。这些也都是以后可以思考改进的方向。

(下面把上次我在组会上做的一些笔记分享一下,以免之后找不到,在这记录一下)

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-14 22:24:20 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/750416.html
  2. 运行时间 : 0.135152s [ 吞吐率:7.40req/s ] 内存消耗:4,913.86kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=01b77d3b6a009e8e9c3bd9141525bbdb
  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.000498s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000689s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000304s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.011466s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000734s ]
  6. SELECT * FROM `set` [ RunTime:0.000278s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000667s ]
  8. SELECT * FROM `article` WHERE `id` = 750416 LIMIT 1 [ RunTime:0.000683s ]
  9. UPDATE `article` SET `lasttime` = 1781447060 WHERE `id` = 750416 [ RunTime:0.025970s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000379s ]
  11. SELECT * FROM `article` WHERE `id` < 750416 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001671s ]
  12. SELECT * FROM `article` WHERE `id` > 750416 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000505s ]
  13. SELECT * FROM `article` WHERE `id` < 750416 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001751s ]
  14. SELECT * FROM `article` WHERE `id` < 750416 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001000s ]
  15. SELECT * FROM `article` WHERE `id` < 750416 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001649s ]
0.136705s