当前位置:首页>python>【代码分享】利用Gaussian与自写Python脚本计算分子间电荷转移积分

【代码分享】利用Gaussian与自写Python脚本计算分子间电荷转移积分

  • 2026-01-18 15:53:12
【代码分享】利用Gaussian与自写Python脚本计算分子间电荷转移积分
#!bin/env python3
importnumpy as np
frommath importsqrt
deffind_nbasis(fchk_dir):
txt =open(fchk_dir)
forline intxt:
ifline.split()[0=="Number"andline.split()[1=="of"andline.split()[2=="basis":
returnint(line.split()[5])
else:
continue
return0
deffind_moene(fchk_dir, num):
txt =open(fchk_dir)
txt.seek(0)
line =txt.readline()
while1:
ifline.split()[0=="Alpha"andline.split()[1=="Orbital"andline.split()[2=="Energies":
line =next(txt)
break
else:
line =next(txt)
continue
moene =[]
forinrange(int(num /5)):
moene.append(float(line.split()[0]))
moene.append(float(line.split()[1]))
moene.append(float(line.split()[2]))
moene.append(float(line.split()[3]))
moene.append(float(line.split()[4]))
line =next(txt)
ifnum %5==0:
txt.close()
else:
forinrange(num %5):
moene.append(float(line.split()[i]))
txt.close()
returnnp.array(moene)
deffind_mocoeff(fchk_dir, numb):
mocoeff =[]
txt =open(fchk_dir)
txt.seek(0)
line =txt.readline()
while1:
ifline.split()[0=="Alpha"andline.split()[1=="MO"andline.split()[2=="coefficients":
line =next(txt)
break
else:
line =next(txt)
continue
forinrange(int(numb *numb /5)):
mocoeff.append(float(line.split()[0]))
mocoeff.append(float(line.split()[1]))
mocoeff.append(float(line.split()[2]))
mocoeff.append(float(line.split()[3]))
mocoeff.append(float(line.split()[4]))
line =next(txt)
ifnumb *numb %5==0:
txt.close()
else:
forinrange(numb *numb %5):
mocoeff.append(float(line.split()[i]))
txt.close()
moc=np.array(mocoeff).reshape(numb, numb).T
returnmoc
deffind_overlap(log_dir, num):  # 寻找重叠矩阵
txt =open(log_dir)
txt.seek(0)
line =txt.readline().strip()
forinrange(10000000):
ifline.strip() =='':  # 如果此行为空,则换行
line =next(txt)
elifline.split()[0=="***"andline.split()[1=="Overlap":  # 如果找到关键词,则换行,退出循环
line =next(txt)
break
else:
line =next(txt)  # 不匹配则换行,继续循环
continue
overlap =np.zeros((num, num), float)  # 建立Nbasis*Nbasis大小的矩阵,用来盛放重叠矩阵
forinrange(int(num /5)):
ifi !=0:
line =next(txt)
line =next(txt)
overlap[i *5, i *5=float(line.split()[1].replace('D''E'))  # python不识别 D表示的指数,需要换成 E表示的。此处为第一行矩阵的第一个元素
line =next(txt)
overlap[i *5+1, i *5=float(line.split()[1].replace('D''E'))  # 第二行矩阵的两个元素
overlap[i *5+1, i *5+1=float(line.split()[2].replace('D''E'))
line =next(txt)
overlap[i *5+2, i *5=float(line.split()[1].replace('D''E'))  # 第三行矩阵的三个元素
overlap[i *5+2, i *5+1=float(line.split()[2].replace('D''E'))
overlap[i *5+2, i *5+2=float(line.split()[3].replace('D''E'))
line =next(txt)
overlap[i *5+3, i *5=float(line.split()[1].replace('D''E'))  # 第四行矩阵的四个元素
overlap[i *5+3, i *5+1=float(line.split()[2].replace('D''E'))
overlap[i *5+3, i *5+2=float(line.split()[3].replace('D''E'))
overlap[i *5+3, i *5+3=float(line.split()[4].replace('D''E'))
forinrange(i *5+4, num):
line =next(txt)
overlap[j, i *5=float(line.split()[1].replace('D''E'))  # 第五行及以后的元素都是五个,循环赋值
overlap[j, i *5+1=float(line.split()[2].replace('D''E'))
overlap[j, i *5+2=float(line.split()[3].replace('D''E'))
overlap[j, i *5+3=float(line.split()[4].replace('D''E'))
overlap[j, i *5+4=float(line.split()[5].replace('D''E'))
line =next(txt)
=num %5
line =next(txt)
if==1:  # 最后一部分赋值是真的不会写。。。。没找到像fortran那样的直接赋值的方法,干脆一个一个赋值了
overlap[num -1, num -1=float(line.split()[1].replace('D''E'))
elif==2:
overlap[num -2, num -2=float(line.split()[1].replace('D''E'))
line =next(txt)
overlap[num -1, num -2=float(line.split()[1].replace('D''E'))
overlap[num -1, num -1=float(line.split()[2].replace('D''E'))
elif==3:
overlap[num -3, num -3=float(line.split()[1].replace('D''E'))
line =next(txt)
overlap[num -2, num -3=float(line.split()[1].replace('D''E'))
overlap[num -2, num -2=float(line.split()[2].replace('D''E'))
line =next(txt)
overlap[num -1, num -3=float(line.split()[1].replace('D''E'))
overlap[num -1, num -2=float(line.split()[2].replace('D''E'))
overlap[num -1, num -1=float(line.split()[3].replace('D''E'))
elif==4:
overlap[num -4, num -4=float(line.split()[1].replace('D''E'))
line =next(txt)
overlap[num -3, num -4=float(line.split()[1].replace('D''E'))
overlap[num -3, num -3=float(line.split()[2].replace('D''E'))
line =next(txt)
overlap[num -2, num -4=float(line.split()[1].replace('D''E'))
overlap[num -2, num -3=float(line.split()[2].replace('D''E'))
overlap[num -2, num -2=float(line.split()[3].replace('D''E'))
line =next(txt)
overlap[num -1, num -4=float(line.split()[1].replace('D''E'))
overlap[num -1, num -3=float(line.split()[2].replace('D''E'))
overlap[num -1, num -2=float(line.split()[3].replace('D''E'))
overlap[num -1, num -1=float(line.split()[4].replace('D''E'))
txt.close()
forinrange(num):
forinrange(num):
overlap[i, j] =overlap[j, i]
returnoverlap
print('===========================================================')
print('==            Transfer Integral Calculation              ==')
print('==              Release Date: 2018-11-06                 ==')
print('==             Ref: JACS,128(30):9882-9886               ==')
print('===========================================================\n')
# dimerfchk=input('please input dimer fchk file:').strip()
# dimerlog=dimerfchk.split('.')[0]+'.log'
# monomer1fchk = input('Please input monomer 1 fchk file: ').strip()
# monomer1log  = monomer1fchk.split('.')[0] + '.log'
# monomer2fchk = input('Please input monomer 2 fchk file: ').strip()
# monomer2log  = monomer2fchk.split('.')[0] + '.log'
dimerlog ="E:\postgraduate\Artical_and_thesis\CEIDP2019\pure_F\electronic_coupling\CH_CF\chcf.log"
dimerfchk ="E:\postgraduate\Artical_and_thesis\CEIDP2019\pure_F\electronic_coupling\CH_CF\chcf.fchk"
monomer1fchk ="E:\postgraduate\Artical_and_thesis\CEIDP2019\pure_F\electronic_coupling\CH_CF\ch.fchk"
monomer1log ="E:\postgraduate\Artical_and_thesis\CEIDP2019\pure_F\electronic_coupling\CH_CF\ch.log"
monomer2fchk ="E:\postgraduate\Artical_and_thesis\CEIDP2019\pure_F\electronic_coupling\CH_CF\cf.fchk"
monomer2log ="E:\postgraduate\Artical_and_thesis\CEIDP2019\pure_F\electronic_coupling\CH_CF\cf.log"
print("reading the number of dimer basis functions...")
NBasis =find_nbasis(dimerfchk)
ifNBasis ==0:
print("Can not find the  \"Number of basis\"")
quit()
print("        find it! the number of basis functions is", NBasis)
print("reading the dimer molecular orbital energies...")
MOene =find_moene(dimerfchk, NBasis)
print("reading the dimer molelular orbital coefficients...")
MOcoeff =find_mocoeff(dimerfchk, NBasis)
print("reading the dimer overlap matrix...")
Overlap =find_overlap(dimerlog, NBasis)
print("calculating the dimer Fock matrix...\n")
cfrag =np.zeros((NBasis, NBasis), dtype=np.double)
tmp1 =np.dot(Overlap, MOcoeff)  # S * C = tmp1
# print(tmp1[0,:])
=np.zeros((NBasis, NBasis), dtype=np.double)
forinrange(NBasis):
e[i, i] =MOene[i]
tmp =np.dot(tmp1, e)
MOcoeff_inv =np.linalg.inv(MOcoeff)
Fock =np.dot(tmp, MOcoeff_inv)
print("reading the monomer1 orbital energies and coefficients...")
NBasis1 =find_nbasis(monomer1fchk)
print("        the number of basis functions of monomer1 is", NBasis1)
MOene1 =find_moene(monomer1fchk, NBasis1)
MOcoeff1 =find_mocoeff(monomer1fchk, NBasis1)
forinrange(NBasis1):
forinrange(NBasis1):
cfrag[i, j] =MOcoeff1[i, j]
print("reading finished!!\n")
print("reading the monomer2 orbital energies and coefficients...")
NBasis2 =find_nbasis(monomer2fchk)
print("        the number of basis functions of monomer2 is", NBasis2)
MOene2 =find_moene(monomer2fchk, NBasis2)
MOcoeff2 =find_mocoeff(monomer2fchk, NBasis2)
forinrange(NBasis2):
forinrange(NBasis2):
cfrag[i +NBasis1, j +NBasis1] =MOcoeff2[i, j]
print('reading finished!!\n')
ihomo1, ilumo1 =5355
ihomo2, ilumo2 =165167
print("calculating the charge transfer integral...")
print('    {:5s}{:5s}{:10s}{:10s}{:10s}{:10s}{:10s}{:10s}{:10s}{:10s}'.format("MO1""MO2""e1 eV""e2 eV""J meV",
"S""ee1 eV""ee2 eV""Je meV",
"Je kcal/mol"))
forinrange(ihomo1 -1, ilumo1):
forinrange(ihomo2 +NBasis1 -1, ilumo2 +NBasis1):
ctmp =np.dot(Fock, cfrag[:, i])
e1 =np.dot(cfrag[:, i], ctmp) *27.21138505
ctmp =np.dot(Fock, cfrag[:, j])
e2 =np.dot(cfrag[:, j], ctmp) *27.21138505
ctmp =np.dot(Fock, cfrag[:, j])
J12 =np.dot(cfrag[:, i], ctmp) *27.21138505
ctmp =np.dot(Overlap, cfrag[:, j])
S12 =np.dot(cfrag[:, i], ctmp)
ee1 =0.5*((e1 +e2) -2.0*J12 *S12 +(e1 -e2) *sqrt(1.0-S12 **2)) /(1-S12 **2)
ee2 =0.5*((e1 +e2) -2.0*J12 *S12 -(e1 -e2) *sqrt(1.0-S12 **2)) /(1-S12 **2)
Je12 =(J12 -0.5*(e1 +e2) *S12) /(1-S12 **2)
print('{:5d}{:5d}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}'.format(i +1, j -NBasis1 +1,
e1, e2, J12 *1000, S12,
ee1, ee2, Je12 *1000,
Je12 *23.05))

在有机电子器件的研究中,分子间的电荷转移积分(Transfer Integral, JJ 或 VV)是衡量电荷传输效率的核心参数。今天我们分享一段Python代码,它通过读取Gaussian的计算结果(Fchk文件和Log文件),利用“投影法”(Projection Hamiltonian)来计算这一重要物理量。

1. 导入库与辅助工具函数

首先,我们需要导入处理数值运算的numpy库和数学函数sqrt

#!bin/env python3import numpy as npfrom math import sqrt

2. 读取基组数量 (find_nbasis)

这是计算的第一步。我们需要知道计算中使用了多少个基函数,这将决定所有矩阵(如系数矩阵、重叠矩阵)的大小。该函数遍历.fchk文件,找到 “Number of basis functions” 关键字并返回其数值。

deffind_nbasis(fchk_dir):    txt = open(fchk_dir)for line in txt:if line.split()[0] == "Number"and line.split()[1] == "of"and line.split()[2] == "basis":returnint(line.split()[5])else:continuereturn0

3. 读取分子轨道能量 (find_moene)

此函数用于读取分子的轨道能级。.fchk文件中的数据通常是固定格式(每行5个数值)。函数通过循环读取这些浮点数,并将其转换为Numpy数组以便后续处理。

deffind_moene(fchk_dir, num):    txt = open(fchk_dir)    txt.seek(0)    line = txt.readline()while1:if line.split()[0] == "Alpha"and line.split()[1] == "Orbital"and line.split()[2] == "Energies":            line = next(txt)breakelse:            line = next(txt)continue    moene = []for i inrange(int(num / 5)):        moene.append(float(line.split()[0]))        moene.append(float(line.split()[1]))        moene.append(float(line.split()[2]))        moene.append(float(line.split()[3]))        moene.append(float(line.split()[4]))        line = next(txt)if num % 5 == 0:        txt.close()else:for i inrange(num % 5):            moene.append(float(line.split()[i]))        txt.close()return np.array(moene)

4. 读取分子轨道系数 (find_mocoeff)

分子轨道系数矩阵 CC 是连接基函数与分子轨道的桥梁。代码逻辑与读取能量类似,但由于数据量是基函数数量的平方(N×NN×N),读取后我们需要使用 .reshape 和 .T 将其还原为矩阵形式并进行转置,以符合标准定义。

deffind_mocoeff(fchk_dir, numb):    mocoeff = []    txt = open(fchk_dir)    txt.seek(0)    line = txt.readline()while1:if line.split()[0] == "Alpha"and line.split()[1] == "MO"and line.split()[2] == "coefficients":            line = next(txt)breakelse:            line = next(txt)continuefor i inrange(int(numb * numb / 5)):        mocoeff.append(float(line.split()[0]))        mocoeff.append(float(line.split()[1]))        mocoeff.append(float(line.split()[2]))        mocoeff.append(float(line.split()[3]))        mocoeff.append(float(line.split()[4]))        line = next(txt)if numb * numb % 5 == 0:        txt.close()else:for i inrange(numb * numb % 5):            mocoeff.append(float(line.split()[i]))        txt.close()    moc=np.array(mocoeff).reshape(numb, numb).Treturn moc

5. 读取重叠矩阵 (find_overlap)

这是一个比较复杂的函数。Gaussian 默认不在 .fchk 文件中输出重叠矩阵 SS,因此我们需要从 .log 文件中提取。

  • 难点
    :Log文件中矩阵是以“下三角”格式打印的,且每5个元素换行,空行处理较繁琐。
  • 格式转换
    :Gaussian使用 D (如 1.0D-05) 表示科学计数法,Python不识别,因此需要用 replace('D', 'E') 进行转换。
  • 矩阵补全
    :代码先填充下三角部分,最后通过双重循环利用对称性 overlap[i, j] = overlap[j, i] 补全整个矩阵。
deffind_overlap(log_dir, num):  # 寻找重叠矩阵    txt = open(log_dir)    txt.seek(0)    line = txt.readline().strip()for i inrange(10000000):if line.strip() == '':  # 如果此行为空,则换行            line = next(txt)elif line.split()[0] == "***"and line.split()[1] == "Overlap":  # 如果找到关键词,则换行,退出循环            line = next(txt)breakelse:            line = next(txt)  # 不匹配则换行,继续循环continue    overlap = np.zeros((num, num), float)  # 建立Nbasis*Nbasis大小的矩阵,用来盛放重叠矩阵# ---(省略部分中间繁琐的逐行读取赋值代码,逻辑是按Log文件格式解析下三角矩阵)---# ...# 处理最后剩余不足5个元素的行if k == 1:  # ...         overlap[num - 1, num - 1] = float(line.split()[1].replace('D''E'))elif k == 2:# ... (省略具体赋值逻辑,原理同上)pass# ... (省略 k==3 和 k==4 的逻辑)    txt.close()# 利用对称性补全矩阵for i inrange(num):for j inrange(num):            overlap[i, j] = overlap[j, i]return overlap

6. 主程序:数据读取与Fock矩阵构建

在主程序中,我们首先初始化文件路径。这里硬编码了文件路径,实际使用时可以取消注释 input 部分进行交互式输入。核心逻辑如下:

  1. 读取二聚体的基组数、轨道能量、系数矩阵和重叠矩阵。
  2. 构造Fock矩阵
    :根据量子化学原理,F=SCεC1F=SCεC1。我们利用二聚体计算得到的系数矩阵 CC 和能量 εε,反推出二聚体在基组下的Fock算符矩阵 FF
print('===========================================================')# ... (打印标题信息) ...# 这里定义输入文件路径 (使用时可用 input() 替代)dimerlog = "..."dimerfchk = "..."monomer1fchk = "..."monomer1log = "..."monomer2fchk = "..."monomer2log = "..."# 读取二聚体数据print("reading the number of dimer basis functions...")NBasis = find_nbasis(dimerfchk)print("reading the dimer molecular orbital energies...")MOene = find_moene(dimerfchk, NBasis)print("reading the dimer molelular orbital coefficients...")MOcoeff = find_mocoeff(dimerfchk, NBasis)print("reading the dimer overlap matrix...")Overlap = find_overlap(dimerlog, NBasis)# 计算二聚体 Fock 矩阵: F = S * C * E * C^(-1)print("calculating the dimer Fock matrix...\n")cfrag = np.zeros((NBasis, NBasis), dtype=np.double)tmp1 = np.dot(Overlap, MOcoeff)  # S * Ce = np.zeros((NBasis, NBasis), dtype=np.double)for i inrange(NBasis):    e[i, i] = MOene[i]          # 构造对角能量矩阵tmp = np.dot(tmp1, e)          # (S * C) * EMOcoeff_inv = np.linalg.inv(MOcoeff)Fock = np.dot(tmp, MOcoeff_inv) # 得到 Fock 矩阵

7. 组装片段轨道与计算转移积分

计算电荷转移积分通常采用“片段轨道”方法。

  1. 片段轨道组装
    :我们将单体1和单体2的分子轨道系数(MO系数)填充到与二聚体基组相同大小的矩阵 cfrag 中。这相当于在二聚体的基组下描述单体的轨道。
  2. 对角化计算
    :利用公式 Jeff=J120.5(e1+e2)S121S122Jeff=1S122J120.5(e1+e2)S12,其中 J12=C1TFC2J12=C1TFC2
    • e1,e2e1,e2
      : 单体轨道在二聚体势场下的有效轨道能。
    • J12J12
      : 原始耦合矩阵元。
    • S12S12
      : 轨道重叠积分。
    • 最终输出考虑了重叠修正后的有效转移积分 JeJe,单位换算为 meV 和 kcal/mol。
# 读取单体1数据并填入 cfrag 左上角NBasis1 = find_nbasis(monomer1fchk)MOene1 = find_moene(monomer1fchk, NBasis1)MOcoeff1 = find_mocoeff(monomer1fchk, NBasis1)for i inrange(NBasis1):for j inrange(NBasis1):        cfrag[i, j] = MOcoeff1[i, j]# 读取单体2数据并填入 cfrag 右下角NBasis2 = find_nbasis(monomer2fchk)MOene2 = find_moene(monomer2fchk, NBasis2)MOcoeff2 = find_mocoeff(monomer2fchk, NBasis2)for i inrange(NBasis2):for j inrange(NBasis2):        cfrag[i + NBasis1, j + NBasis1] = MOcoeff2[i, j]# 设置需要计算的轨道范围 (HOMO/LUMO索引)ihomo1, ilumo1 = 5355ihomo2, ilumo2 = 165167print("calculating the charge transfer integral...")# 循环计算每对轨道之间的耦合for i inrange(ihomo1 - 1, ilumo1):for j inrange(ihomo2 + NBasis1 - 1, ilumo2 + NBasis1):# 计算 e1: C1^T * F * C1        ctmp = np.dot(Fock, cfrag[:, i])        e1 = np.dot(cfrag[:, i], ctmp) * 27.21138505# Hartry转eV# 计算 e2: C2^T * F * C2        ctmp = np.dot(Fock, cfrag[:, j])        e2 = np.dot(cfrag[:, j], ctmp) * 27.21138505# 计算 J12: C1^T * F * C2        ctmp = np.dot(Fock, cfrag[:, j])        J12 = np.dot(cfrag[:, i], ctmp) * 27.21138505# 计算 S12: C1^T * S * C2        ctmp = np.dot(Overlap, cfrag[:, j])        S12 = np.dot(cfrag[:, i], ctmp)# 计算有效轨道能量和有效转移积分 (Generalized 2-level model)        ee1 = 0.5 * ((e1 + e2) - 2.0 * J12 * S12 + (e1 - e2) * sqrt(1.0 - S12 ** 2)) / (1 - S12 ** 2)        ee2 = 0.5 * ((e1 + e2) - 2.0 * J12 * S12 - (e1 - e2) * sqrt(1.0 - S12 ** 2)) / (1 - S12 ** 2)        Je12 = (J12 - 0.5 * (e1 + e2) * S12) / (1 - S12 ** 2)# 打印结果print('{:5d}{:5d}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}{:10.3f}'.format(i + 1, j - NBasis1 + 1,                                                                                                e1, e2, J12 * 1000, S12,                                                                                                ee1, ee2, Je12 * 1000,                                                                                                Je12 * 23.05))

总结:这段代码通过Python实现了从Gaussian原始数据到物理量计算的完整流程。虽然Log文件的解析部分稍显繁琐,但核心思想——即利用二聚体Fock矩阵和单体轨道系数的投影——是计算电子耦合最准确的方法之一。希望这段代码对你的科研工作有所帮助!

(注:代码中的 find_overlap 部分处理了剩余逻辑,实际运行时请确保Log文件路径正确且包含完整的Overlap矩阵输出)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 21:24:01 HTTP/2.0 GET : https://f.mffb.com.cn/a/461598.html
  2. 运行时间 : 0.094603s [ 吞吐率:10.57req/s ] 内存消耗:4,954.58kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=42fa205ceed2100f3beacdbf443796e1
  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.000706s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001004s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000325s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000342s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000559s ]
  6. SELECT * FROM `set` [ RunTime:0.000244s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000489s ]
  8. SELECT * FROM `article` WHERE `id` = 461598 LIMIT 1 [ RunTime:0.000880s ]
  9. UPDATE `article` SET `lasttime` = 1770557041 WHERE `id` = 461598 [ RunTime:0.007017s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.002267s ]
  11. SELECT * FROM `article` WHERE `id` < 461598 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001907s ]
  12. SELECT * FROM `article` WHERE `id` > 461598 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003189s ]
  13. SELECT * FROM `article` WHERE `id` < 461598 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001246s ]
  14. SELECT * FROM `article` WHERE `id` < 461598 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001071s ]
  15. SELECT * FROM `article` WHERE `id` < 461598 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003683s ]
0.096210s