当前位置:首页>python>Python 初学者也能看懂的 APScheduler 入门指南

Python 初学者也能看懂的 APScheduler 入门指南

  • 2026-06-29 14:00:07
Python 初学者也能看懂的 APScheduler 入门指南
PYTHON · SCHEDULER

Python 初学者也能看懂的 APScheduler 入门指南

从零理解定时任务:会写函数,就能学会 APScheduler
技术博客/ Python 入门 / 阅读 12 min
◎ 导 语

当你写 Python 程序时,很快会遇到这样的问题:

  每天凌晨 2 点清理一次日志。
  每隔 10 分钟同步一次数据。
  用户提交任务后,延迟 30 秒再执行。
  后台长期运行一个定时巡检程序。

这些需求都属于“定时任务”。如果你只是简单地 while True 加 time.sleep(),刚开始能跑,但代码很快会变得不好维护。比如:怎么按每天 9 点执行?怎么暂停任务?怎么处理任务异常?程序重启后任务还在不在?

⚡ 先记住
这时就可以使用 APScheduler
⚡ 先记住
APScheduler 的全称是 Advanced Python Scheduler,它是 Python 里非常常用的定时任务框架。它可以帮你用更清晰、更专业的方式管理定时任务。
⚡ 先记住
本文面向 Python 初学者,不要求你熟悉调度系统,只需要会写基本的 Python 函数。
01
/
 APScheduler 能做什么

APScheduler 主要负责一件事:在指定的时间规则下,自动执行你写好的 Python 函数

比如你有一个函数:

</> python

01def send_report():

02    print("发送日报")

你可以告诉 APScheduler:

  • 每天早上 9 点执行它。
  • 每隔 5 分钟执行它。
  • 在某个具体时间点只执行一次。

APScheduler 会在后台帮你盯着时间,到点就调用这个函数。

02
/
 安装 APScheduler

使用 pip 安装即可:

</> bash

01pip install APScheduler

安装完成后,可以在 Python 里导入它:

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

如果没有报错,说明安装成功。

03
/
 最简单的例子

下面的例子会每隔 3 秒打印一次当前时间:

</> python

01from datetime import datetime

02from apscheduler.schedulers.blocking import BlockingScheduler

03

04

05def print_time():

06    print("当前时间:", datetime.now())

07

08

09scheduler = BlockingScheduler()

10

11scheduler.add_job(print_time, "interval", seconds=3)

12

13print("定时任务已启动")

14scheduler.start()

运行后,你会看到类似输出:

</> text

01定时任务已启动

02当前时间: 2026-06-23 10:00:03

03当前时间: 2026-06-23 10:00:06

04当前时间: 2026-06-23 10:00:09

这段代码里有几个重点:

print_time 是你要定时执行的函数。
BlockingScheduler 是调度器。
add_job() 用来添加任务。
"interval" 表示按固定间隔执行。
seconds=3 表示每 3 秒执行一次。
scheduler.start() 表示启动调度器。
04
/
 APScheduler 的几个核心概念

刚开始学 APScheduler,最容易被各种名词绕晕。其实先记住下面几个就够了。

概念
中文理解
作用
Scheduler
调度器
负责管理和运行所有任务
Job
任务
你要定时执行的函数
Trigger
触发器
决定任务什么时候执行
Executor
执行器
决定任务如何被执行,比如线程池
JobStore
任务存储
决定任务保存在哪里,比如内存或数据库

初学阶段最常接触的是前三个:SchedulerJobTrigger

05
/
 三种常用触发器

APScheduler 里最常用的触发器有三种:

  • date
    :指定某个时间点执行一次。
  • interval
    :按固定时间间隔重复执行。
  • cron
    :按类似 Linux crontab 的规则执行。

date:只执行一次

date 适合“在某个具体时间执行一次”的场景。

</> python

01from datetime import datetime, timedelta

02from apscheduler.schedulers.blocking import BlockingScheduler

03

04

05def once_job():

06    print("这个任务只执行一次")

07

08

09scheduler = BlockingScheduler()

10

11run_time = datetime.now() + timedelta(seconds=10)

12scheduler.add_job(once_job, "date", run_date=run_time)

13

14print("任务将在 10 秒后执行")

15scheduler.start()

这个任务会在程序启动 10 秒后执行一次,执行完就不会再重复执行。

interval:每隔一段时间执行

interval 适合“每隔多久执行一次”的场景。

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02

03

04def sync_data():

05    print("同步数据中...")

06

07

08scheduler = BlockingScheduler()

09

10scheduler.add_job(sync_data, "interval", minutes=5)

11

12scheduler.start()

这个任务会每隔 5 分钟执行一次。

interval 常用参数包括:

参数
含义
weeks
间隔多少周
days
间隔多少天
hours
间隔多少小时
minutes
间隔多少分钟
seconds
间隔多少秒

cron:按日历规则执行

cron 适合“每天几点”“每周几”“每月几号”这种更像日历的规则。

例如:每天早上 9 点执行:

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02

03

04def morning_job():

05    print("早上 9 点任务执行")

06

07

08scheduler = BlockingScheduler()

09

10scheduler.add_job(morning_job, "cron", hour=9, minute=0)

11

12scheduler.start()

再比如:每周一到周五的 18:30 执行:

</> python

01scheduler.add_job(

02    morning_job,

03    "cron",

04    day_of_week="mon-fri",

05    hour=18,

06    minute=30,

07)

cron 常用参数包括:

参数
含义
示例
year
2026
month
1-12
day
1-31
day_of_week
星期
mon-fri
hour
小时
0-23
minute
分钟
0-59
second
0-59
06
/
 BlockingScheduler 和 BackgroundScheduler 的区别

初学者常看到两种调度器:

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02from apscheduler.schedulers.background import BackgroundScheduler

它们的区别很重要。

BlockingScheduler

BlockingScheduler 会阻塞当前程序。

也就是说,执行到:

</> python

01scheduler.start()

后面的代码就不会继续往下走了,程序会一直停在那里运行定时任务。

它适合单独写一个定时任务脚本:

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02

03

04def job():

05    print("任务执行")

06

07

08scheduler = BlockingScheduler()

09scheduler.add_job(job, "interval", seconds=5)

10scheduler.start()

BackgroundScheduler

BackgroundScheduler 会在后台线程中运行,不会阻塞主程序。

它适合和 Web 服务、桌面程序或其他长期运行的程序一起使用。

</> python

01import time

02from apscheduler.schedulers.background import BackgroundScheduler

03

04

05def job():

06    print("后台任务执行")

07

08

09scheduler = BackgroundScheduler()

10scheduler.add_job(job, "interval", seconds=5)

11scheduler.start()

12

13print("主程序继续运行")

14

15while True:

16    time.sleep(1)

如果你写的是一个单独的定时任务脚本,优先使用 BlockingScheduler

如果你要把定时任务放进已有程序里,通常使用 BackgroundScheduler

07
/
 给任务函数传参数

如果你的函数需要参数,可以通过 args 或 kwargs 传入。

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02

03

04def send_message(username, content):

05    print(f"给 {username} 发送消息:{content}")

06

07

08scheduler = BlockingScheduler()

09

10scheduler.add_job(

11    send_message,

12    "interval",

13    seconds=10,

14    args=["小明", "记得提交日报"],

15)

16

17scheduler.start()

也可以使用 kwargs

</> python

01scheduler.add_job(

02    send_message,

03    "interval",

04    seconds=10,

05    kwargs={

06        "username": "小明",

07        "content": "记得提交日报",

08    },

09)

08
/
 给任务设置 id

建议给重要任务设置 id,这样以后可以方便地查询、删除、暂停或恢复任务。

</> python

01scheduler.add_job(

02    send_message,

03    "interval",

04    seconds=10,

05    id="send_message_job",

06    args=["小明", "记得提交日报"],

07)

如果你重复添加同一个 id 的任务,APScheduler 默认会报错。开发时常用 replace_existing=True,表示如果任务已存在,就替换它:

</> python

01scheduler.add_job(

02    send_message,

03    "interval",

04    seconds=10,

05    id="send_message_job",

06    args=["小明", "记得提交日报"],

07    replace_existing=True,

08)

09
/
 暂停、恢复和删除任务

有了任务 id 后,就可以管理任务。

暂停任务

</> python

01scheduler.pause_job("send_message_job")

恢复任务

</> python

01scheduler.resume_job("send_message_job")

删除任务

</> python

01scheduler.remove_job("send_message_job")

查看所有任务

</> python

01jobs = scheduler.get_jobs()

02

03for job in jobs:

04    print(job.id, job.next_run_time)

10
/
 任务异常怎么处理

如果任务函数内部报错,APScheduler 不会直接让整个调度器崩溃,但你应该自己处理异常,方便排查问题。

</> python

01def sync_data():

02    try:

03        print("开始同步数据")

04        # 这里写真正的同步逻辑

05        result = 1 / 0

06    except Exception as e:

07        print("同步数据失败:", e)

在真实项目中,更推荐使用 logging 记录日志:

</> python

01import logging

02

03logging.basicConfig(level=logging.INFO)

04logger = logging.getLogger(__name__)

05

06

07def sync_data():

08    try:

09        logger.info("开始同步数据")

10        # 这里写真正的同步逻辑

11    except Exception:

12        logger.exception("同步数据失败")

logger.exception() 会自动记录异常堆栈,比单纯 print() 更适合排查问题。

11
/
 程序重启后任务还在吗

默认情况下,APScheduler 把任务保存在内存里。

这意味着:

  • 程序运行时,任务存在。
  • 程序停止后,任务消失。
  • 程序重启后,需要重新添加任务。

如果你希望任务重启后仍然存在,就需要使用 JobStore,比如把任务保存到数据库。

常见方式是使用 SQLAlchemy:

</> bash

01pip install SQLAlchemy

示例:

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore

03

04

05def job():

06    print("持久化任务执行")

07

08

09jobstores = {

10    "default": SQLAlchemyJobStore(url="sqlite:///jobs.sqlite")

11}

12

13scheduler = BlockingScheduler(jobstores=jobstores)

14

15scheduler.add_job(

16    job,

17    "interval",

18    seconds=10,

19    id="persistent_job",

20    replace_existing=True,

21)

22

23scheduler.start()

这样任务信息会保存到 jobs.sqlite 文件中。

需要注意:使用持久化任务时,任务函数必须是可以被 Python 正常导入的函数。不要使用匿名函数 lambda,也不要使用临时定义的内部函数。

12
/
 常用配置:避免任务堆积

假设一个任务每 10 秒执行一次,但某次执行花了 30 秒,会发生什么?

如果不加限制,可能出现多个同类任务同时执行,甚至越积越多。APScheduler 提供了几个参数帮助你控制这种情况。

</> python

01scheduler.add_job(

02    sync_data,

03    "interval",

04    seconds=10,

05    id="sync_data_job",

06    max_instances=1,

07    coalesce=True,

08    misfire_grace_time=30,

09)

这几个参数的含义如下:

参数
作用
max_instances=1
同一个任务最多同时运行 1 个实例
coalesce=True
如果错过多次执行,只补执行一次
misfire_grace_time=30
如果任务错过执行时间不超过 30 秒,仍然允许执行

初学时可以先记住这套组合:如果任务不应该并发执行,就设置 max_instances=1

13
/
 时区问题

如果你的任务涉及“每天几点执行”,一定要注意时区。

可以在创建调度器时指定时区:

</> python

01from apscheduler.schedulers.blocking import BlockingScheduler

02

03

04scheduler = BlockingScheduler(timezone="Asia/Shanghai")

这样 cron 规则会按上海时区计算。

比如:

</> python

01scheduler.add_job(

02    job,

03    "cron",

04    hour=9,

05    minute=0,

06)

表示每天北京时间 9 点执行。

14
/
 在 Flask 中简单使用

如果你在 Flask 项目里想启动一个后台任务,可以使用 BackgroundScheduler

</> python

01from flask import Flask

02from apscheduler.schedulers.background import BackgroundScheduler

03

04

05app = Flask(__name__)

06

07

08def check_status():

09    print("检查系统状态")

10

11

12scheduler = BackgroundScheduler(timezone="Asia/Shanghai")

13scheduler.add_job(

14    check_status,

15    "interval",

16    seconds=30,

17    id="check_status_job",

18    replace_existing=True,

19)

20scheduler.start()

21

22

23@app.route("/")

24def index():

25    return "Hello Flask"

26

27

28if __name__ == "__main__":

29    app.run(debug=False)

这里要注意:开发环境如果开启 Flask 的 debug=True,自动重载可能导致任务被启动两次。初学阶段可以先设置 debug=False,等理解清楚后再处理重载问题。

15
/
 初学者常见问题

1. 为什么我的程序一运行就退出了

如果你使用的是 BackgroundScheduler,它不会阻塞主线程。

下面的代码可能会马上退出:

</> python

01from apscheduler.schedulers.background import BackgroundScheduler

02

03

04def job():

05    print("任务执行")

06

07

08scheduler = BackgroundScheduler()

09scheduler.add_job(job, "interval", seconds=5)

10scheduler.start()

因为主程序没有其他事情要做,执行完就结束了。

解决方式之一是让主程序保持运行:

</> python

01import time

02

03while True:

04    time.sleep(1)

如果你只是写独立脚本,更简单的方式是使用 BlockingScheduler

2. 为什么任务执行了两次

常见原因是程序启动了两份,或者 Web 框架的开发模式开启了自动重载。

例如 Flask 的 debug=True,可能会导致代码被加载两次。解决时可以先关闭 debug,或者确保调度器只在主进程中启动。

3. 为什么数据库持久化任务报错

常见原因是任务函数不能被正常序列化。

使用持久化任务时,尽量这样写:

</> python

01def my_job():

02    print("任务执行")

避免这样写:

</> python

01scheduler.add_job(lambda: print("任务执行"), "interval", seconds=5)

也尽量不要把任务函数写成某个函数内部的局部函数。

4. APScheduler 适合所有后台任务吗

不适合。

APScheduler 适合单机程序里的定时任务。如果你需要分布式任务队列、任务重试、任务结果追踪、大量异步任务处理,通常要考虑 Celery、RQ、Arq 等任务队列工具。

简单理解:

工具
适合场景
APScheduler
定时执行 Python 函数
Celery
分布式异步任务、任务队列
schedule
更轻量的简单定时任务
crontab
操作系统级定时脚本

如果你只是想在 Python 程序里每隔一段时间执行某个函数,APScheduler 是很合适的选择。

16
/
 一个完整示例

最后看一个稍微完整一点的例子:

</> python

01import logging

02from datetime import datetime

03from apscheduler.schedulers.blocking import BlockingScheduler

04

05

06logging.basicConfig(

07    level=logging.INFO,

08    format="%(asctime)s [%(levelname)s] %(message)s",

09)

10logger = logging.getLogger(__name__)

11

12

13def sync_data():

14    try:

15        logger.info("开始同步数据")

16        logger.info("当前时间:%s", datetime.now())

17        # 在这里编写真实的数据同步逻辑

18        logger.info("数据同步完成")

19    except Exception:

20        logger.exception("数据同步失败")

21

22

23def clean_logs():

24    logger.info("开始清理日志")

25    # 在这里编写真实的日志清理逻辑

26    logger.info("日志清理完成")

27

28

29def main():

30    scheduler = BlockingScheduler(timezone="Asia/Shanghai")

31

32    scheduler.add_job(

33        sync_data,

34        "interval",

35        minutes=10,

36        id="sync_data_job",

37        max_instances=1,

38        coalesce=True,

39        replace_existing=True,

40    )

41

42    scheduler.add_job(

43        clean_logs,

44        "cron",

45        hour=2,

46        minute=0,

47        id="clean_logs_job",

48        max_instances=1,

49        coalesce=True,

50        replace_existing=True,

51    )

52

53    logger.info("调度器启动")

54    scheduler.start()

55

56

57if __name__ == "__main__":

58    main()

这个例子里有两个任务:

  • sync_data
    :每 10 分钟同步一次数据。
  • clean_logs
    :每天凌晨 2 点清理日志。

同时它还设置了:

timezone="Asia/Shanghai":使用中国时区。
id:方便管理任务。
max_instances=1:避免同一个任务并发执行。
coalesce=True:避免错过任务后大量补跑。
replace_existing=True:避免重复添加同名任务时报错。
★ 总 结
APScheduler 的核心并不复杂:写好函数,设定时间规则,让调度器负责按时调用。

APScheduler 是 Python 中非常实用的定时任务框架。对于初学者来说,可以先掌握下面这些内容:

  用 pip install APScheduler 安装。
  用 BlockingScheduler 写独立定时任务脚本。
  用 BackgroundScheduler 把任务放到已有程序后台运行。
  用 date 执行一次性任务。
  用 interval 执行固定间隔任务。
  用 cron 执行每天几点、每周几这类日历任务。
  给任务设置 id,方便后续管理。
  使用 max_instancescoalesce 避免任务堆积。
  涉及每天几点执行时,记得设置时区。

如果你刚开始学习 APScheduler,不需要一次性理解所有高级概念。最好的学习方式是先写一个每隔几秒打印一次内容的小脚本,然后慢慢加入 cron、任务 id、日志、异常处理和持久化。

定时任务看起来简单,但在真实项目里非常常见。掌握 APScheduler 后,你就可以更优雅地处理数据同步、日志清理、状态检查、定时通知等后台工作。

★ 关注我

持续分享 Python、后端开发与工程实践

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 00:56:58 HTTP/2.0 GET : https://f.mffb.com.cn/a/501142.html
  2. 运行时间 : 0.324173s [ 吞吐率:3.08req/s ] 内存消耗:4,793.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=67f40b79c1496f8b1a2fc3736cfc71f6
  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.000585s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000540s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000298s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000306s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000501s ]
  6. SELECT * FROM `set` [ RunTime:0.002832s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000640s ]
  8. SELECT * FROM `article` WHERE `id` = 501142 LIMIT 1 [ RunTime:0.031245s ]
  9. UPDATE `article` SET `lasttime` = 1783011418 WHERE `id` = 501142 [ RunTime:0.006592s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000419s ]
  11. SELECT * FROM `article` WHERE `id` < 501142 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005544s ]
  12. SELECT * FROM `article` WHERE `id` > 501142 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.034504s ]
  13. SELECT * FROM `article` WHERE `id` < 501142 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003672s ]
  14. SELECT * FROM `article` WHERE `id` < 501142 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.083271s ]
  15. SELECT * FROM `article` WHERE `id` < 501142 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.077217s ]
0.326748s