当前位置:首页>python>用Python写邮箱提醒事项的开源脚本

用Python写邮箱提醒事项的开源脚本

  • 2026-02-08 08:55:09
用Python写邮箱提醒事项的开源脚本

还记得年初那篇《2026年规划,我居然一次就搞定了?》吗?今天,我带着承诺中的完整版“周计划生成器”回来了!

如果你还没看过这个文章,或者已经对这里面的内容比较模糊了,建议先去看一下这篇文章哦 

2026年规划,我居然一次就搞定了?!

回顾:从“愿望清单”到“工程项目”

之前,我在文章中提到,我把年度规划当作一个软件项目来管理。当时很多读者留言说:

“这个工程化思维太棒了!但执行起来还是有点难……”

确实,规划最难的不是“制定”,而是“持续执行”。所以我做了一件很程序员的事情:

我把每周规划自动化了。

今天要分享的,就是这个从规划到执行的闭环系统——一个完全开源的Python脚本。

核心特性:

✅ 智能任务管理:支持循环任务、一次性任务、优先级标记✅ 自动时间规划:按类别智能分配,生成甘特图式时间线✅ 多端提醒:支持邮件、微信、手机推送✅ 数据持久化:所有任务JSON存储,历史可追溯✅ 完全开源:MIT协议,随意修改二次开发

技术栈解析

# 核心架构├── TaskManager          # 任务管理核心├── ReportGenerator      # 报告生成引擎  ├── NotificationService  # 多平台通知└── ConfigManager       # 配置管理系统

为什么选择Python?

  • 跨平台:Windows/Mac/Linux全支持
  • 生态丰富:邮件、API、定时任务一键集成
  • 易于扩展:你可以轻松添加新功能

实际使用效果

周一早晨的邮件提醒示例:

快速上手指南

1. 运行python项目

执行脚本截图

2. 基本配置

# 只需修改这个文件config.json:{  "email""your@email.com",  "wechat_key""你的Server酱KEY",  "planning_day""Sunday",  "planning_time""20:00"}

3. 添加你的第一个任务

python planner.py --add-task "学习Python" "学习成长" 2 "high"

4. 设置定时任务

Linux/Maccrontab -e添加:0 20 * * 0 cd ~/weekly-planner && python planner.py

开箱即用的功能模板

脚本内置了6个维度的规划模板,直接使用:

# 健康生活维度示例health_tasks = [    {"name""晨间运动""hours"0.5"days": ["Mon""Wed""Fri"]},    {"name""早睡打卡""hours"0.1"days""all"},    {"name""健康饮食""hours"0.3"days""all"}]

完整的python实现代码

#!/usr/bin/env python3"""每周规划生成器用于自动生成下周的任务规划并发送提醒"""import jsonimport osfrom datetime import datetime, timedeltaimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom pathlib import Pathimport argparse# 配置文件路径CONFIG_FILE = "weekly_planner_config.json"TASKS_FILE = "tasks.json"TEMPLATE_FILE = "weekly_template.md"OUTPUT_DIR = "weekly_reports"class WeeklyPlanner:    def __init__(self):        self.config = self.load_config()        self.tasks = self.load_tasks()    def load_config(self):        """加载配置文件"""        default_config = {            "email": {                "enabled"False,                "smtp_server""smtp.gmail.com",                "smtp_port"587,                "username""your_email@gmail.com",                "password""your_password",                "sender""your_email@gmail.com",                "receiver""your_email@gmail.com"            },            "tasks_file""tasks.json",            "output_dir""weekly_reports",            "planning_day""Sunday",  # 每周几生成规划            "planning_time""20:00",  # 生成规划的时间            "categories": [                "学习成长",                "工作项目"                "健康生活",                "人际关系",                "兴趣爱好"            ]        }        try:            with open(CONFIG_FILE, 'r', encoding='utf-8'as f:                config = json.load(f)                # 合并配置,确保所有必需字段都存在                for key in default_config:                    if key not in config:                        config[key] = default_config[key]                return config        except FileNotFoundError:            print(f"配置文件不存在,创建默认配置...")            # 保存默认配置            with open(CONFIG_FILE, 'w', encoding='utf-8'as f:                json.dump(default_config, f, ensure_ascii=False, indent=2)            return default_config    def load_tasks(self):        """加载任务数据"""        try:            with open(self.config["tasks_file"], 'r', encoding='utf-8'as f:                tasks = json.load(f)                return tasks        except FileNotFoundError:            print(f"任务文件不存在,创建示例任务文件...")            sample_tasks = self.create_sample_tasks()            self.save_tasks(sample_tasks)            return sample_tasks    def create_sample_tasks(self):        """创建示例任务"""        return {            "tasks": [                {                    "id"1,                    "name""AI模型训练项目",                    "category""学习成长",                    "estimated_hours"2,                    "priority""high",                    "recurring"True,                    "recurring_days": ["Monday""Wednesday""Friday"],                    "status""pending",                    "tags": ["AI""Python""机器学习"]                },                {                    "id"2,                    "name""技术博客写作",                    "category""学习成长",                    "estimated_hours"1.5,                    "priority""medium",                    "recurring"True,                    "recurring_days": ["Saturday"],                    "status""pending",                    "tags": ["写作""技术分享"]                },                {                    "id"3,                    "name""健身房锻炼",                    "category""健康生活",                    "estimated_hours"1,                    "priority""high",                    "recurring"True,                    "recurring_days": ["Monday""Wednesday""Friday"],                    "status""pending",                    "tags": ["健身""健康"]                }            ]        }    def save_tasks(self, tasks):        """保存任务数据"""        with open(self.config["tasks_file"], 'w', encoding='utf-8'as f:            json.dump(tasks, f, ensure_ascii=False, indent=2)    def get_next_week_tasks(self):        """获取下周的任务"""        today = datetime.now()        next_monday = today + timedelta(days=(7 - today.weekday()))        next_sunday = next_monday + timedelta(days=6)        week_tasks = []        for task in self.tasks["tasks"]:            if task.get("recurring"False):                # 检查是否是循环任务                recurring_days = task.get("recurring_days", [])                for day in recurring_days:                    task_copy = task.copy()                    task_copy["scheduled_day"] = day                    week_tasks.append(task_copy)            elif task.get("status") == "pending":                # 一次性任务                week_tasks.append(task)        return week_tasks, next_monday, next_sunday    def generate_weekly_report(self):        """生成每周规划报告"""        week_tasks, next_monday, next_sunday = self.get_next_week_tasks()        # 按类别分组任务        tasks_by_category = {}        for category in self.config["categories"]:            tasks_by_category[category] = []        for task in week_tasks:            category = task.get("category""其他")            if category not in tasks_by_category:                tasks_by_category[category] = []            tasks_by_category[category].append(task)        # 计算总时间        total_hours = sum(task.get("estimated_hours"0for task in week_tasks)        # 读取模板或使用默认模板        try:            with open(TEMPLATE_FILE, 'r', encoding='utf-8'as f:                template = f.read()        except FileNotFoundError:            template = """# 下周核心任务 ({start_date} - {end_date})## 📊 概览- 总任务数: {task_count} 个- 预计总耗时: {total_hours} 小时- 平均每日: {daily_hours:.1f} 小时{categories_content}## 🎯 重点关注{high_priority_content}## 💡 温馨提示1. 建议每天开始前查看当日任务2. 遇到困难时及时调整,保持灵活性3. 每周日进行复盘,优化下周计划行动,只有行动才能决定价值! 🚀"""        # 生成按类别分类的内容        categories_content = ""        for category, tasks in tasks_by_category.items():            if tasks:                categories_content += f"\n### {category}\n"                for task in tasks:                    emoji = "🔴" if task.get("priority") == "high" else "🟡" if task.get("priority") == "medium" else "🟢"                    scheduled_day = task.get("scheduled_day""未指定")                    hours = task.get("estimated_hours"0)                    tags = " ".join([f"`{tag}`" for tag in task.get("tags", [])])                    categories_content += f"- {emoji} **{task['name']}** ({scheduled_day}, 预计{hours}小时) {tags}\n"        # 生成高优先级任务内容        high_priority_tasks = [t for t in week_tasks if t.get("priority") == "high"]        high_priority_content = ""        if high_priority_tasks:            high_priority_content = "本周有以下高优先级任务需要重点关注:\n"            for task in high_priority_tasks:                scheduled_day = task.get("scheduled_day""尽快完成")                high_priority_content += f"- **{task['name']}** (安排于: {scheduled_day})\n"        else:            high_priority_content = "本周没有高优先级任务,可以按部就班完成常规任务。"        # 格式化日期        start_date_str = next_monday.strftime("%Y年%m月%d日")        end_date_str = next_sunday.strftime("%Y年%m月%d日")        # 渲染报告        daily_hours = total_hours / 7 if len(week_tasks) > 0 else 0        report = template.format(            start_date=start_date_str,            end_date=end_date_str,            task_count=len(week_tasks),            total_hours=total_hours,            daily_hours=daily_hours,            categories_content=categories_content,            high_priority_content=high_priority_content        )        return report, next_monday    def save_report_to_file(self, report, date):        """保存报告到文件"""        # 创建输出目录        Path(self.config["output_dir"]).mkdir(exist_ok=True)        # 生成文件名        filename = f"weekly_plan_{date.strftime('%Y%m%d')}.md"        filepath = os.path.join(self.config["output_dir"], filename)        with open(filepath, 'w', encoding='utf-8'as f:            f.write(report)        print(f"✓ 报告已保存到: {filepath}")        return filepath    def send_email_qq(self, report, date):        """QQ邮箱专用发送函数"""        try:            email_config = self.config["email"]            subject = f"下周规划提醒 ({date.strftime('%Y-%m-%d')})"            msg = MIMEText(report, 'plain''utf-8')            msg['Subject'] = Header(subject, 'utf-8')            msg['From'] = email_config["sender"]            msg['To'] = email_config["receiver"]            if email_config.get("use_ssl"True):                server = smtplib.SMTP_SSL(email_config["smtp_server"], email_config["smtp_port"])            else:                server = smtplib.SMTP(email_config["smtp_server"], email_config["smtp_port"])                server.starttls()            server.login(email_config["username"], email_config["password"])            server.sendmail(email_config["sender"], [email_config["receiver"]], msg.as_string())            server.quit()            print("✓ QQ邮箱邮件发送成功!")            return True        except Exception as e:            print(f"✗ QQ邮箱发送失败: {e}")            return False    def add_task(self, name, category, hours, priority="medium", recurring=False, recurring_days=None, tags=None):        """添加新任务"""        if recurring_days is None:            recurring_days = []        if tags is None:            tags = []        # 生成新任务ID        new_id = max([task["id"for task in self.tasks["tasks"]]) + 1 if self.tasks["tasks"else 1        new_task = {            "id": new_id,            "name": name,            "category": category,            "estimated_hours": hours,            "priority": priority,            "recurring": recurring,            "recurring_days": recurring_days,            "status""pending",            "tags": tags,            "created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S")        }        self.tasks["tasks"].append(new_task)        self.save_tasks(self.tasks)        print(f"✓ 任务 '{name}' 添加成功!")        return new_id    def run(self, send_email=False):        """运行规划生成器"""        print("=" * 50)        print("每周规划生成器")        print("=" * 50)        # 生成报告        report, next_monday = self.generate_weekly_report()        print(report)        # 保存到文件        report_file = self.save_report_to_file(report, next_monday)        # 发送邮件        if send_email:            self.send_email_qq(report, next_monday)        print("✓ 下周规划生成完成!")        return report_filedef main():    parser = argparse.ArgumentParser(description="每周规划生成器")    parser.add_argument("--email", action="store_true"help="发送邮件提醒")    parser.add_argument("--add-task", nargs='+'help="添加新任务: 名称 类别 小时数 [优先级]")    parser.add_argument("--list-tasks", action="store_true"help="列出所有任务")    parser.add_argument("--init", action="store_true"help="初始化配置文件")    args = parser.parse_args()    planner = WeeklyPlanner()    if args.init:        print("初始化完成!")        print(f"配置文件: {CONFIG_FILE}")        print(f"示例任务文件: {TASKS_FILE}")        return    if args.add_task:        # 添加新任务        if len(args.add_task) < 3:            print("请提供任务名称、类别和预计小时数")            return        name = args.add_task[0]        category = args.add_task[1]        hours = float(args.add_task[2])        priority = args.add_task[3if len(args.add_task) > 3 else "medium"        planner.add_task(name, category, hours, priority)    elif args.list_tasks:        # 列出所有任务        print("当前所有任务:")        print("-" * 50)        for task in planner.tasks["tasks"]:            status = "🔁" if task.get("recurring"else "✅" if task.get("status") == "completed" else "📝"            print(f"{status} [{task['id']}{task['name']} ({task['category']}{task['estimated_hours']}h)")    else:        # 生成每周规划        planner.run(send_email=args.email)if __name__ == "__main__":    main()

我的使用心得

使用这个系统一周后,我发现了几个关键点:

1. 原子化是王道

任务拆得越细,执行率越高。我坚持“2小时原则”:所有任务都拆到2小时内能完成。

2. 系统 > 意志力

不要依赖“我一定能完成”的决心,而是设计“不完成都难”的系统。

3. 复盘创造复利

每周的复盘Markdown文件,现在成了我最好的成长日记。

4. 灵活调整是智慧

系统支持动态调整,遇到突发情况随时改,不会因为一次错过而全盘放弃。

真实数据反馈

自使用该系统以来:

  • 任务完成率:从 ~20% → 85%+
  • 时间感知度:从模糊 → 精准到小时
  • 周末焦虑感:大幅降低(因为知道每天做了什么)

进阶玩法

1. 集成日历API

# 自动同步Google Calendardef sync_with_calendar():    # 你的代码...

2. 数据可视化

# 用Matplotlib生成执行报告import matplotlib.pyplot as pltplt.plot(week_numbers, completion_rates)

3. AI优化建议

# 结合GPT API给出优化建议def get_ai_suggestion(tasks):    # 调用OpenAI API    pass

开源共建

如果你觉得这里的代码格式乱了,或者不是特别清楚是如何运行的,建议从下面的地址看详细的使用说明并复制代码: 

https://www.yuque.com/hl1012/lrxex9/kkd5xhkhhk25o5gk?singleDoc# 《规划生成器》

下一步计划

基于读者的反馈,我计划:

  1. Web界面版:不需要命令行,打开网页就能用
  2. 移动端App:随时查看和调整计划
  3. 团队协作版:和团队、家人共享计划
  4. AI智能分配:让AI帮你优化时间安排
  5. 社交媒体内容排期(微博、公众号、小红书),定时发布到各平台
  6. 家庭事务管理助手:家人生日/纪念日提醒
  7. 项目管理里程碑跟踪:项目关键节点自动提醒,依赖任务完成状态同步,风险预警(延期风险、资源冲突)
  8. 接入其他平台:例如微信,企业微信等

总结

技术改变生活,不是空话。

一个小小的Python脚本,就能把我们从“计划-放弃”的循环中解救出来。它不会让你突然变得自律,但它给了你一个可操作的系统

在这个系统里:

  • 目标不再遥不可及
  • 时间变得清晰可见
  • 成长有迹可循

2026年已过去一周,你的年度计划执行得如何了?如果还在寻找坚持的方法,不妨试试这个脚本。

最后,用程序员的方式祝福:

def wish_you_2026():    plans = load_your_plans()    execute_with_consistency(plans)    achievements = review_at_year_end()    if achievements > expectations:        print("🎉 2026,你超额完成了!")    else:        print("✨ 至少,你一直在前进的路上。")    return True

规划的意义,不在于完美执行,而在于让我们在不确定的世界里,多一份确定的勇气。

如果对这个系列感兴趣,请留言,后续会基于这个,把我设想的下一步计划和进阶玩法都与大家进行分享~,让这个26年的计划不再孤单的躺在计划表里。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 19:58:12 HTTP/2.0 GET : https://f.mffb.com.cn/a/461218.html
  2. 运行时间 : 0.118215s [ 吞吐率:8.46req/s ] 内存消耗:4,599.27kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d6e36fe79755c8160a5324817695d631
  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.000562s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000717s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000247s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002155s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000589s ]
  6. SELECT * FROM `set` [ RunTime:0.000225s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000532s ]
  8. SELECT * FROM `article` WHERE `id` = 461218 LIMIT 1 [ RunTime:0.002759s ]
  9. UPDATE `article` SET `lasttime` = 1770551892 WHERE `id` = 461218 [ RunTime:0.002643s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000536s ]
  11. SELECT * FROM `article` WHERE `id` < 461218 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.006349s ]
  12. SELECT * FROM `article` WHERE `id` > 461218 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000738s ]
  13. SELECT * FROM `article` WHERE `id` < 461218 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006410s ]
  14. SELECT * FROM `article` WHERE `id` < 461218 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002085s ]
  15. SELECT * FROM `article` WHERE `id` < 461218 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006603s ]
0.119703s