当前位置:首页>python>Python 零基础100天—Day83 定时任务

Python 零基础100天—Day83 定时任务

  • 2026-08-18 23:12:15
Python 零基础100天—Day83 定时任务

🐍 Python Day83:定时任务 — 让脚本按时自动运行

🕐 预计用时:3-4 小时 | 🎯 目标:掌握 schedule、APScheduler 和 crontab 三种定时任务方案


📖 今日目录

  1. 定时任务是什么?
  2. schedule 库(简单场景)
  3. APScheduler(生产环境)
  4. 系统 crontab(Linux/Mac)
  5. Windows 任务计划程序
  6. 实战:自动化办公流水线
  7. 今日练习
  8. 今日小结

1. 定时任务是什么?

# 定时任务 = 让程序在指定时间自动执行
# 就像给程序设闹钟

# 常见场景:
# ✅ 每天早上 8:00 发送日报邮件
# ✅ 每小时抓取一次数据
# ✅ 每周一生成周报
# ✅ 每月 1 号生成工资表
# ✅ 每 5 分钟检查一次服务器状态

# 三种方案:
# 1. schedule    → 纯 Python,简单轻量,适合脚本
# 2. APScheduler → 功能强大,支持持久化,适合生产环境
# 3. crontab     → 系统级调度,最稳定,适合服务器
方案
复杂度
适合场景
平台
schedule
简单脚本、个人项目
全平台
APScheduler
⭐⭐
Web 应用、生产环境
全平台
crontab
⭐⭐
Linux 服务器
Linux/Mac
Windows 任务计划
⭐⭐
Windows 服务器
Windows

2. schedule 库

# 安装
# pip install schedule

import schedule
import time
from datetime import datetime

# === 基础用法 ===
def job():
    print(f'[{datetime.now().strftime("%H:%M:%S")}] 任务执行了!')

# 每 10 秒执行一次
schedule.every(10).seconds.do(job)

# 每 5 分钟执行一次
schedule.every(5).minutes.do(job)

# 每小时执行一次
schedule.every(1).hours.do(job)

# 每天 10:30 执行
schedule.every().day.at("10:30").do(job)

# 每天下午 6 点执行
schedule.every().day.at("18:00").do(job)

# 每周一执行
schedule.every().monday.do(job)

# 每周一 09:00 执行
schedule.every().monday.at("09:00").do(job)

# 每月 1 号执行(需要自定义)
schedule.every().day.at("00:00").do(lambda: job() if datetime.now().day == 1 else None)

# === 主循环 ===
print('⏰ 定时任务已启动,按 Ctrl+C 停止')
while True:
    schedule.run_pending()   # 检查并执行到期的任务
    time.sleep(1)            # 每秒检查一次
# === 传递参数 ===
def send_report(recipient, report_type):
    print(f'发送 {report_type} 报告给 {recipient}')

schedule.every().day.at("18:00").do(send_report, recipient='boss@company.com', report_type='日报')

# === 取消任务 ===
job = schedule.every().day.at("18:00").do(send_report, recipient='boss@company.com', report_type='日报')
schedule.cancel_job(job)

# === 取消所有任务 ===
schedule.clear()

# === 获取所有任务 ===
for job in schedule.get_jobs():
    print(f'任务: {job.job_func}, 下次执行: {job.next_run}')

# === 标签(方便管理)===
schedule.every().day.at("08:00").do(job).tag('morning', 'report')
schedule.every().day.at("18:00").do(job).tag('evening', 'report')

# 按标签取消
schedule.clear('morning')  # 取消所有 morning 标签的任务

💡 schedule 的局限:

• 只能在前台运行(程序关闭就停止)
• 不支持持久化(重启后任务丢失)
• 不支持并发(一个任务阻塞会影响其他任务)
• 适合简单的个人脚本,不适合生产环境


3. APScheduler

# 安装
# pip install apscheduler

from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.date import DateTrigger
from datetime import datetime, timedelta

# === 三种调度器 ===
# 1. BlockingScheduler — 阻塞式(前台运行,适合独立脚本)
# 2. BackgroundScheduler — 后台式(不阻塞,适合 Web 应用)
# 3. AsyncIOScheduler — 异步式(配合 asyncio)

# === 三种触发器 ===
# 1. IntervalTrigger — 间隔触发(每 N 秒/分/小时)
# 2. CronTrigger — Cron 表达式触发(每天几点、每周几等)
# 3. DateTrigger — 指定时间触发(一次性)

# === 示例1:间隔执行 ===
scheduler = BlockingScheduler()

def my_job():
    print(f'[{datetime.now()}] 间隔任务执行')

scheduler.add_job(my_job, IntervalTrigger(seconds=30), id='job1')

# === 示例2:Cron 表达式 ===
def daily_report():
    print(f'[{datetime.now()}] 生成日报')

# 每天 18:00 执行
scheduler.add_job(daily_report, CronTrigger(hour=18, minute=0), id='daily_report')

# 每周一 09:00 执行
scheduler.add_job(daily_report, CronTrigger(day_of_week='mon', hour=9, minute=0), id='weekly_report')

# 每月 1 号 00:00 执行
scheduler.add_job(daily_report, CronTrigger(day=1, hour=0, minute=0), id='monthly_report')

# 每 5 分钟执行
scheduler.add_job(daily_report, CronTrigger(minute='*/5'), id='every_5min')

# 工作日每天 09:00-18:00 每小时执行
scheduler.add_job(daily_report, CronTrigger(day_of_week='mon-fri', hour='9-18'), id='workday_hourly')

# === 示例3:指定时间(一次性)===
scheduler.add_job(daily_report, DateTrigger(run_date='2026-05-13 10:00:00'), id='one_time')

# === 启动 ===
# scheduler.start()  # 取消注释后运行
# === 带参数的 Job ===
def send_email(to, subject, body):
    print(f'发送邮件: {subject} → {to}')

scheduler.add_job(
    send_email,
    CronTrigger(hour=18),
    args=['boss@company.com'],           # 位置参数
    kwargs={'subject': '日报', 'body': '...'},  # 关键字参数
    id='email_job',
)

# === Job 管理 ===
# 暂停
scheduler.pause_job('daily_report')

# 恢复
scheduler.resume_job('daily_report')

# 修改
scheduler.reschedule_job('daily_report', trigger=CronTrigger(hour=19))

# 删除
scheduler.remove_job('daily_report')

# 获取所有 Job
for job in scheduler.get_jobs():
    print(f'{job.id}: next_run={job.next_run_time}')

# === 事件监听 ===
from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR

def job_listener(event):
    if event.exception:
        print(f'❌ Job {event.job_id} 执行失败: {event.exception}')
    else:
        print(f'✅ Job {event.job_id} 执行成功')

scheduler.add_listener(job_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)

📋 CronTrigger 参数速查

参数
说明
示例
year
2026
month
月(1-12)
5
'*/3' 每3月
day
日(1-31)
1
'1,15' 每月1和15号
day_of_week
星期(0=周一,注意与 cron 不同)
'mon-fri'
'0-4'
hour
时(0-23)
18
'9-17''*/2'
minute
分(0-59)
30
'*/5' 每5分
second
秒(0-59)
0

4. 系统 crontab

# crontab 是 Linux/Mac 的系统级定时任务调度器
# 最稳定、最可靠,服务器首选

# === crontab 表达式格式 ===
# ┌───────────── 分 (0-59)
# │ ┌───────────── 时 (0-23)
# │ │ ┌───────────── 日 (1-31)
# │ │ │ ┌───────────── 月 (1-12)
# │ │ │ │ ┌───────────── 星期 (0-6, 0=周日)
# │ │ │ │ │
# * * * * * command

# === 常用示例 ===
# 每分钟执行
# * * * * * /usr/bin/python3 /home/user/script.py

# 每 5 分钟执行
# */5 * * * * /usr/bin/python3 /home/user/script.py

# 每小时执行
# 0 * * * * /usr/bin/python3 /home/user/script.py

# 每天 18:00 执行
# 0 18 * * * /usr/bin/python3 /home/user/script.py

# 每天 9:00 和 18:00 执行
# 0 9,18 * * * /usr/bin/python3 /home/user/script.py

# 工作日 9:00 执行(周一到周五)
# 0 9 * * 1-5 /usr/bin/python3 /home/user/script.py

# 每月 1 号 00:00 执行
# 0 0 1 * * /usr/bin/python3 /home/user/script.py

# 每周一 09:00 执行
# 0 9 * * 1 /usr/bin/python3 /home/user/script.py
# === 管理 crontab ===

# 查看当前 crontab
# crontab -l

# 编辑 crontab
# crontab -e

# 删除所有 crontab(危险!)
# crontab -r

# === 用 Python 管理 crontab ===
# pip install python-crontab
from crontab import CronTab

# 创建 cron 对象(当前用户)
cron = CronTab(user=True)

# 添加任务
job = cron.new(command='/usr/bin/python3 /home/user/daily_report.py')
job.setall('0 18 * * *')  # 每天 18:00
job.set_comment('每日报告')

# 写入
cron.write()

# 查看所有任务
for job in cron:
    print(f'{job} | {job.comment}')

# 删除任务
cron.remove(job)
cron.write()

# 清空所有
cron.remove_all()
cron.write()

💡 crontab 注意事项:

• 使用绝对路径:Python 路径、脚本路径、文件路径都要用绝对路径
• 环境变量:cron 环境变量和终端不同,可能找不到包
• 日志:重定向输出到日志文件 >> /var/log/cron.log 2>&1
• 权限:确保脚本有执行权限 chmod +x script.py


5. Windows 任务计划程序

# Windows 没有 crontab,但有"任务计划程序"

# === 方式1:GUI 创建 ===
# 1. 搜索"任务计划程序"
# 2. 创建基本任务
# 3. 设置触发器(每天/每周/每月)
# 4. 设置操作(启动程序 → python.exe)
# 5. 设置参数(脚本路径)

# === 方式2:命令行创建 ===
# schtasks /create /tn "DailyReport" /tr "python C:\scripts\daily.py" /sc daily /st 18:00
# schtasks /query /tn "DailyReport"
# schtasks /delete /tn "DailyReport"

# === 方式3:Python subprocess ===
import subprocess

# 创建每日任务
subprocess.run([
    'schtasks', '/create',
    '/tn', 'PythonDailyReport',
    '/tr', r'python C:\scripts\daily_report.py',
    '/sc', 'daily',
    '/st', '18:00',
    '/f'  # 强制覆盖
], check=True)

# 查询任务
result = subprocess.run(['schtasks', '/query', '/tn', 'PythonDailyReport'], capture_output=True, text=True)
print(result.stdout)

# 删除任务
subprocess.run(['schtasks', '/delete', '/tn', 'PythonDailyReport', '/f'], check=True)

6. 实战:自动化办公流水线

"""
实战:完整的自动化办公流水线
每天 17:30 自动执行:
1. 从数据库/API 获取今日数据
2. 用 openpyxl 生成 Excel 报表
3. 用 email 发送报表给团队
4. 记录执行日志
"""
import schedule
import time
from datetime import datetime
import logging
import traceback

# 配置日志
logging.basicConfig(
    filename='automation.log',
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

def daily_pipeline():
    """每日自动化流水线"""
    logging.info('========== 流水线开始 ==========')

    try:
        # 步骤1:获取数据
        logging.info('步骤1:获取今日数据...')
        data = fetch_today_data()
        logging.info(f'  获取到 {len(data)} 条数据')

        # 步骤2:生成报表
        logging.info('步骤2:生成 Excel 报表...')
        report_file = generate_report(data)
        logging.info(f'  报表已生成: {report_file}')

        # 步骤3:发送邮件
        logging.info('步骤3:发送邮件...')
        send_report_email(report_file)
        logging.info('  邮件发送成功')

        # 步骤4:备份
        logging.info('步骤4:备份数据...')
        backup_data(data)
        logging.info('  备份完成')

        logging.info('========== 流水线完成 ✅ ==========')

    except Exception as e:
        logging.error(f'========== 流水线失败 ❌ ==========')
        logging.error(f'错误: {e}')
        logging.error(traceback.format_exc())

        # 发送告警邮件
        try:
            send_alert_email(f'自动化流水线失败: {e}')
        except Exception:
            pass

def fetch_today_data():
    """模拟获取数据"""
    # 实际项目中从数据库或 API 获取
    import pandas as pd
    return pd.DataFrame({'订单号': [1, 2], '金额': [100, 200]})

def generate_report(data):
    """模拟生成报表"""
    filename = f'report_{datetime.now().strftime("%Y%m%d")}.xlsx'
    # data.to_excel(filename, index=False)
    return filename

def send_report_email(filepath):
    """模拟发送邮件"""
    # 实际调用 smtplib
    pass

def send_alert_email(message):
    """模拟发送告警"""
    pass

def backup_data(data):
    """模拟备份"""
    pass

# === 注册定时任务 ===
schedule.every().day.at("17:30").do(daily_pipeline)

# 也可以测试时立即执行
# daily_pipeline()

# === 主循环 ===
print('🤖 自动化流水线已启动')
print('   每天 17:30 自动执行')
print('   按 Ctrl+C 停止')

while True:
    schedule.run_pending()
    time.sleep(30)

7. 今日练习

🏋️ 练习 1:简单定时器

# 用 schedule 实现:
# 每 10 秒打印一次当前时间
# 每分钟打印一次"一分钟过去了"
# 运行 3 分钟后自动停止

🏋️ 练习 2:APScheduler 实战

# 用 APScheduler 实现:
# 每天 9:00 打印"早安"
# 每天 18:00 打印"下班了"
# 工作日每小时执行一次检查任务
# 添加事件监听,记录执行日志

🏋️ 练习 3:自动化脚本

# 写一个完整的自动化脚本:
# 每天 18:00 自动读取数据文件
# 生成 Excel 报表
# 发送邮件给指定收件人
# 记录执行日志到文件

8. 今日小结

知识点
核心内容
schedule
纯 Python,简单轻量,every().day.at().do()
APScheduler
BlockingScheduler / CronTrigger / 事件监听
crontab
系统级调度,5 位表达式,python-crontab 库管理
Windows
schtasks 命令 / 任务计划程序 GUI
最佳实践
日志记录 + 异常处理 + 告警通知 + 断点续传

🚀 明日预告:Day 84 — 自动化办公工具箱综合项目

把 openpyxl + 邮件 + 定时任务组合起来,构建一个完整的自动化办公工具箱:Excel 报表自动生成 + 邮件自动发送 + 定时执行 + 日志记录。这是自动化阶段的终极实战!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:41:48 HTTP/2.0 GET : https://f.mffb.com.cn/a/511088.html
  2. 运行时间 : 0.497312s [ 吞吐率:2.01req/s ] 内存消耗:4,619.40kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=63047871c4773052be89c9e7ae2747cb
  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.000850s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001251s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.066879s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000662s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001434s ]
  6. SELECT * FROM `set` [ RunTime:0.000610s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001481s ]
  8. SELECT * FROM `article` WHERE `id` = 511088 LIMIT 1 [ RunTime:0.001631s ]
  9. UPDATE `article` SET `lasttime` = 1787294508 WHERE `id` = 511088 [ RunTime:0.061194s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000659s ]
  11. SELECT * FROM `article` WHERE `id` < 511088 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001158s ]
  12. SELECT * FROM `article` WHERE `id` > 511088 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.032403s ]
  13. SELECT * FROM `article` WHERE `id` < 511088 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.039836s ]
  14. SELECT * FROM `article` WHERE `id` < 511088 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.078710s ]
  15. SELECT * FROM `article` WHERE `id` < 511088 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.038369s ]
0.500940s