当前位置:首页>python>《码上仿真:Abaqus Python API》Vol.18 AFXToolsetGui Abaqus 界面大整容(下)

《码上仿真:Abaqus Python API》Vol.18 AFXToolsetGui Abaqus 界面大整容(下)

  • 2026-06-29 14:57:50
《码上仿真:Abaqus Python API》Vol.18 AFXToolsetGui Abaqus 界面大整容(下)

在 Abaqus 的世界里,每个模块(Module)都有自己的脾气。你在"Part(零件)"模块里需要的工具,到了"Visualization(后处理)"模块可能就成了碍眼的垃圾。这种模块化的设计理念,使得 Abaqus/CAE 能够在不同阶段提供最合适的功能集合,但也给自定义插件开发带来了挑战。

想象一下这样的场景:你开发了一个专门用于网格划分的工具箱,包含各种自动网格优化算法。如果在后处理模块中这个工具箱依然占据着宝贵的屏幕空间,不仅会分散用户的注意力,还可能导致误操作。更糟糕的是,某些工具在错误的模块中执行可能会产生不可预期的结果,甚至损坏模型数据。

如果你的自定义工具箱不管在哪个模块都赖着不走,那不叫二次开发,那叫"流氓软件"。一个优雅的插件,应该像影子一样,在用户需要的时候精准浮现,在用户离开时悄然隐退。这种"按需加载"的行为不仅提升了用户体验,也体现了开发者对软件架构的深刻理解。

每个模块都有自己的工具箱、菜单栏和工具栏配置。当用户切换模块时,Abaqus 会自动更新界面,显示当前模块相关的功能。自定义插件要融入这一体系,就必须遵循模块注册机制。我们要让 GUI 真正"活"起来,需要掌握以下三个核心逻辑。这些机制共同构成了 Abaqus 插件与主程序的无缝集成方案。

1.模块"落户":Module Binding 机制

在主窗口类中,你需要使用 registerToolset 方法将你的工具箱与 Abaqus 的原生模块绑定。

from abaqusGui import *def register_toolset():    """    将工具箱注册到特定模块    """    # 获取主窗口    main_window = getAFXApp().getAFXMainWindow()    # 建议将工具箱实例化放在注册之前    # 确保 MyCustomToolset 类已经定义    my_toolset = MyCustomToolset()    # 注册到建模核心模块    # 注意:模块名称区分大小写,且必须是 Abaqus 内部定义的标准名称    target_modules = ['Part', 'Assembly', 'Property', 'Mesh']    for module in target_modules:        main_window.registerToolset(my_toolset, module)    print(f"工具箱已成功绑定至:{', '.join(target_modules)}")# 提示:该函数通常在 _plugin.py 的顶层被调用

这就像是给你的工具箱办理"落户"。你得告诉系统:我是属于"Mesh(网格)"小区的。这样,当用户切换到网格模块时,你的工具箱才会像小区大门一样自动为你打开。通过 `registerToolset` 方法,你的工具箱成为了模块切换事件的观察者,从而实现了"按需显示"的行为。

2. "后厨"通讯员:sendCommand 与 sendCommandString

在 Abaqus 中,GUI 运行在一个独立的 Python 解释器中,负责捕捉用户的点击;而 Kernel 运行在另一个解释器中,负责处理 mdb 模型数据。GUI 作为一个独立的 Python 进程,它必须通过 sendCommand 将命令字符串发往 Kernel(内核)执行。这两者物理隔离,信息交换全靠“指令投递”。

很多开发者在面对 sendCommand 和 sendCommandString 时会感到困惑。虽然它们的目标都是将 Python 指令发送到内核,但两者的角色设定完全不同。

1. sendCommand:高水平的"智能派送员"

`sendCommand` 通常是 `AFXGuiCommand` 类中的一个方法。它的设计初衷是为了在表单(Form)或对话框(Dialog)的生命周期内,以最符合 Abaqus 原生规范的方式发送指令。

  • 封装性:它不仅仅是发送字符串,还会自动检查命令是否需要记录到日志。

  • 日志控制:它会根据命令对象的设置,自动处理 `writeToJournal`(记录到 .jnl)和 `writeToReplay`(记录到 .rpy)等开关。

  • 适用场景:在自定义 `AFXGuiCommand` 类的 `issueCommand` 方法中使用,是标准的插件开发姿势。

class MyCommand(AFXGuiCommand):    def issueCommand(self):        cmd = f"create_part(name='Part-A')"        # 使用 self 调用,会自动带入该 Command 预设的 Journaling 标志        self.sendCommand(cmd)

2. sendCommandString:底层的"暴力直连管"

`sendCommandString` 是 `AFXApp` 或其子类中的一个更底层、更通用的方法。

  • 即时性:它不依赖于任何 `AFXGuiCommand` 结构。只要你能获取到 App 对象(通过 `getAFXApp()`),你就能随时随地给内核"发号施令"。

  • 手动控制:它通常只接收一个原始的字符串,不会自动帮你管理那些复杂的日志记录标志。

  • 适用场景:在非命令流程中(例如直接在对话框初始化时读取内核数据,或简单的脚本调用)使用。

# 获取 App 对象并直接通过管道发送字符串getAFXApp().sendCommandString("print(len(mdb.models['Model-1'].parts))")

界面点击只是"点菜",真正的"炒菜(矩阵运算)"在内核。

这就像是前台服务员用传声筒对后厨喊话。即便前台乱成一锅粥(UI 刷新),只要传声筒(Command String)够清晰,后厨的大厨(Kernel)就能稳稳地把模型算出来。

sendCommand 与 sendCommandString 的使用决策

  • 首选 sendCommand:在正式的插件开发中,应优先在 `issueCommand` 里使用 `sendCommand`。这样你的操作才能像官方功能一样,被 `.jnl` "黑匣子"完美捕捉。

  • 警惕引号陷阱:无论用哪个,构建字符串时一定要注意嵌套引号。例如:`cmd = "print('Hello Kernel')"`。

  • PDE 是好帮手:在开发这些通讯逻辑时,利用 Abaqus PDE(Python 开发环境)可以实时监控内核的反馈。

3. 空间管理大师:hideCli 与 hideMessageArea

如果你觉得 Abaqus 下方的命令行(CLI)或消息区太碍眼,你可以调用 hideCli() 或 hideMessageArea() 来腾出更多视觉空间。

class MyCustomApp(AFXApp):    """    自定义 Abaqus 应用程序类    用于初始化时配置界面    """    def __init__(self, argv):        AFXApp.__init__(self, 'Abaqus/CAE', 'Abaqus Inc.')    def onStartup(self):        """        启动时调用        用于自定义界面布局        """        main_window = getAFXApp().getAFXMainWindow()        # 隐藏命令行界面(CLI)        # 适合不需要频繁输入命令的用户        main_window.hideCli()        # 隐藏消息区域        # 适合屏幕空间有限的情况        main_window.hideMessageArea()        # 也可以重新显示        # main_window.showCli()        # main_window.showMessageArea()        # 设置窗口最大化        main_window.maximize()        # 自定义窗口标题        main_window.setTitle('My Custom Abaqus Environment')

这就像是给你的工作室做"全屋定制"。通过代码,你可以隐藏那些平时用不到的各种窗口,让你的仿真界面看起来像专业的航空航天控制台一样简洁、高级。

4.实战代码:实现工具箱的"按需加载"

要让你的工具箱在特定模块显示,你的注册逻辑通常如下:

基础用法示例

from abaqusGui import *# 1. 在自定义 App 类中重写构造函数class MyCustomApp(AFXApp):    def __init__(self):        AFXApp.__init__(self)        # 2. 注册你的工具箱到 'Part' 模块        # 只有在进入 Part 模块时,MySamsaraToolset 才会出现        mainWindow = getAFXApp().getAFXMainWindow()        myToolset = MySamsaraToolset()        mainWindow.registerToolset(myToolset, 'Part')    # 3. 还可以顺手隐藏掉不想看的界面元素    def onStartup(self):        getAFXApp().getAFXMainWindow().hideCli()  # 隐藏命令行,让视野更开阔

完整工程案例:模块感知的网格优化工具箱

from abaqusGui import *from abaqusConstants import *class MeshOptimizationToolset(AFXToolsetGui):    """    网格优化工具箱    仅在 Mesh 模块显示,提供一键网格优化功能    """    def __init__(self):        AFXToolsetGui.__init__(self, 'Mesh Optimization')        # 创建表单        self.form = MeshOptForm()        # 构建界面        self.build_ui()    def build_ui(self):        """        构建工具箱界面        """        # 创建按钮组        group = FXGroupBox(self, 'Quick Mesh Tools', FRAME_GROOVE)        # 自动网格按钮        icon_auto = afxCreateIcon('auto_mesh.png')        btn_auto = FXButton(            p=group,            text='Auto Mesh',            ic=icon_auto,            tgt=AutoMeshCommand(self.form),            sel=AFXMode.ID_ACTIVATE        )        btn_auto.setTipText('Automatically mesh selected part')        # 网格质量检查按钮        icon_quality = afxCreateIcon('quality_check.png')        btn_quality = FXButton(            p=group,            text='Check Quality',            ic=icon_quality,            tgt=QualityCheckCommand(self.form),            sel=AFXMode.ID_ACTIVATE        )        btn_quality.setTipText('Check mesh quality metrics')        # 网格细化按钮        icon_refine = afxCreateIcon('refine_mesh.png')        btn_refine = FXButton(            p=group,            text='Refine Mesh',            ic=icon_refine,            tgt=RefineMeshCommand(self.form),            sel=AFXMode.ID_ACTIVATE        )        btn_refine.setTipText('Refine mesh in selected region')class MeshOptForm(AFXForm):    """    网格优化表单    """    def __init__(self):        AFXForm.__init__(self)        self.element_size = AFXFloatKeyword(            self, 'element_size', TRUE, 5.0        )        self.quality_threshold = AFXFloatKeyword(            self, 'quality_threshold', TRUE, 0.3        )        self.refine_region = AFXStringKeyword(            self, 'refine_region', TRUE, 'All'        )class AutoMeshCommand(AFXGuiCommand):    """    自动网格命令    """    def __init__(self, form):        AFXGuiCommand.__init__(self, form)        self.form = form    def issueCommand(self):        """        发送自动网格命令到内核        """        cmd = f"""from abaqus import *from abaqusConstants import *# 获取当前模型和零件model = mdb.models[session.currentModelName]part = model.parts[session.currentPartName]# 设置种子part.seedPart(    size={self.form.element_size.getValue()},    deviationFactor=0.1,    minSizeFactor=0.1)# 生成网格part.generateMesh()print(f'Mesh generated with element size: {self.form.element_size.getValue()}')"""        sendCommand(            command=cmd,            writeToJournal=True,            printOutput=True        )class QualityCheckCommand(AFXGuiCommand):    """    网格质量检查命令    """    def __init__(self, form):        AFXGuiCommand.__init__(self, form)        self.form = form    # --- QualityCheckCommand 内部改进片段 ---    def issueCommand(self):        # 修正:使用 session 快速锁定当前零件,并调用真实的验证 API        cmd = f"""    from abaqus import *    from abaqusConstants import *    p = mdb.models[session.currentModelName].parts[session.currentPartName]    # 使用 Abaqus 内建的网格验证工具    # 检查雅可比比率 (Shape factor / Jacobian)    bad_elements = p.verifyMeshQuality(criterion=JACOBIAN, threshold={self.form.quality_threshold.getValue()})    print('-' * 30)    print(f'网格质量自检报告:')    print(f'不合格单元数: {{len(bad_elements["failedElements"])}}')    print(f'严重警告单元数: {{len(bad_elements["warningElements"])}}')    print('-' * 30)    """        sendCommand(            command=cmd,            writeToJournal=True,            printOutput=True        )# 应用程序类class MeshOptimizationApp(AFXApp):    """    网格优化应用程序    负责初始化插件并注册到 Mesh 模块    """    def __init__(self, argv):        AFXApp.__init__(self, 'MeshOptimization', 'Custom Tools')    def onStartup(self):        """        启动时注册工具箱        """        main_window = getAFXApp().getAFXMainWindow()        # 创建工具箱        toolset = MeshOptimizationToolset()        # 注册到 Mesh 模块        # 这样工具箱只在网格模块显示        main_window.registerToolset(toolset, 'Mesh')        print("Mesh Optimization Toolset registered to Mesh module!")# 启动函数def run():    """    启动网格优化插件    """    app = MeshOptimizationApp([])    app.onStartup()# 自动运行if __name__ == '__main__':    run()

总结

在 Abaqus 脚本建模中,AFXToolsetGui 的高级应用不仅是美化,更是流程的重构。

高级集成的核心价值

1. 专业化定制:根据企业或个人的工作流程定制界面,去除冗余功能,突出核心操作。

2. 效率提升:通过模块感知和快捷键,减少界面切换和鼠标移动的时间损耗。

3. 错误预防:在错误的模块中隐藏不相关的工具,避免误操作导致的数据损坏。

4. 品牌统一:定制化的界面风格体现企业或团队的专业形象。

5. 知识沉淀:将专家经验封装在插件中,形成可复用的知识资产。

真正的自由不是随心所欲地摆放按钮,而是在既定的系统框架内,通过精密的注册与通讯,创造出最符合人类直觉的工作流。当你能随手隐藏 CLI、精准调用 Kernel、按需弹出工具箱时,你已经不再是 Abaqus 的用户,而是它的"主理人"。


👉互动话题:在平时的仿真中,你觉得 Abaqus 界面上哪一部分最碍眼?或者你最希望自定义哪一个模块的工具栏?在评论区留下你的"装修方案",我们一起把它实现

公众号

知识星球

扫码关注

科趣范,让科研更简单

小红书

抖音

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 09:36:42 HTTP/2.0 GET : https://f.mffb.com.cn/a/491709.html
  2. 运行时间 : 0.097418s [ 吞吐率:10.27req/s ] 内存消耗:4,374.74kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a33401299f51bcee5fe8c637dd7fa043
  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.000561s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000790s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000292s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000240s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000465s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000558s ]
  8. SELECT * FROM `article` WHERE `id` = 491709 LIMIT 1 [ RunTime:0.006629s ]
  9. UPDATE `article` SET `lasttime` = 1783129002 WHERE `id` = 491709 [ RunTime:0.005111s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.002448s ]
  11. SELECT * FROM `article` WHERE `id` < 491709 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000532s ]
  12. SELECT * FROM `article` WHERE `id` > 491709 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002760s ]
  13. SELECT * FROM `article` WHERE `id` < 491709 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000555s ]
  14. SELECT * FROM `article` WHERE `id` < 491709 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001884s ]
  15. SELECT * FROM `article` WHERE `id` < 491709 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004447s ]
0.098959s