当前位置:首页>python>别只把 Joplin 当笔记软件:用 Python API 打造自己的自动化知识库

别只把 Joplin 当笔记软件:用 Python API 打造自己的自动化知识库

  • 2026-06-28 06:44:40
别只把 Joplin 当笔记软件:用 Python API 打造自己的自动化知识库
很多人使用 Joplin,只是把它当成一个轻量级 Markdown 笔记软件:写笔记、做分类、同步资料。但实际上,Joplin 还有一个容易被忽略的能力——它开放了本地 API。这意味着,Joplin 不只是一个“手动记录工具”,也可以变成一个可以被 Python 调用的本地知识库入口。只要桌面端正在运行,就可以通过脚本自动创建笔记、管理笔记本、添加标签,把外部内容直接写入 Joplin。比如,技术笔记、每日记录、网页摘要、实验日志、项目资料,都可以整理成 Markdown 后自动归档到 Joplin 中。本文就通过一个简单的 Python 示例,演示如何调用 Joplin API,把内容写入本地笔记库。
官方文档参考:
  • Joplin Data API: https://joplinapp.org/help/api/references/rest_api/
  • Joplin Clipper Authorization: https://joplinapp.org/help/dev/spec/clipper_auth/

一、Joplin API 是什么

Joplin 提供了一个本地 REST API。它依赖 Joplin 桌面端中的 Web Clipper 服务运行。
虽然名字叫 Web Clipper,但它不只服务于网页剪藏。只要服务启动,其他程序也可以通过本机地址访问 Joplin,例如:
http://localhost:41184
常见能力包括:
  • 创建笔记
  • 修改笔记
  • 创建笔记本
  • 查询笔记列表
  • 添加标签
  • 删除或移动笔记
它的使用方式和普通 REST API 类似。比如创建一条笔记,本质上就是向 /notes 接口发送一个 POST 请求。

二、开启 Joplin Web Clipper 服务

首先打开 Joplin 桌面端,然后进入:
Tools → Options → Web Clipper
中文界面一般是:
工具 → 选项 → Web Clipper
在这里需要完成两件事:
  1. 启用 Web Clipper 服务;
  2. 复制 Authorization token。
这个 token 相当于访问 Joplin 本地数据的钥匙。后续 Python 脚本请求 API 时,都需要携带它。
Joplin 默认服务端口通常是:
41184
如果端口不同,可以在 Web Clipper 设置页面查看实际端口。

三、先测试 Joplin 服务是否可用

安装 Python 依赖:
pip install requests
然后新建一个 Python 文件,例如:
joplin_api_test.py
写入以下代码:
import requestsdefcheck_joplin_service(port=41184):    url =f"http://localhost:{port}/ping"    response = requests.get(url, timeout=5)if response.text =="JoplinClipperServer":print("Joplin API service is running.")returnTrueprint("Unexpected response:", response.text)returnFalseif __name__ =="__main__":    check_joplin_service()
如果输出:
Joplin API service is running.
说明 Joplin 本地 API 已经可以访问。
如果访问失败,一般需要检查:
  • Joplin 桌面端是否已经打开;
  • Web Clipper 服务是否已经启用;
  • 端口是否为 41184
  • 防火墙或代理是否拦截了本地请求。

四、用 Python 创建一条 Joplin 笔记

下面演示最核心的功能:创建一条 Markdown 笔记。
将代码中的 YOUR_JOPLIN_TOKEN 替换为自己的 token。  (可参考下图位置找到自己的TOKEN)
注意:下面这段 Python 代码本身包含 Markdown 代码块,所以本文档外层使用了四个反引号作为代码围栏,避免 Joplin 渲染时提前截断。
import requestsJOPLIN_PORT =41184JOPLIN_TOKEN ="YOUR_JOPLIN_TOKEN"defcreate_note(title, body):    url =f"http://localhost:{JOPLIN_PORT}/notes"    params ={"token": JOPLIN_TOKEN}    data ={"title": title,"body": body}    response = requests.post(url, params=params, json=data, timeout=10)    response.raise_for_status()    note = response.json()return noteif __name__ =="__main__":    title ="Python 写入 Joplin 测试笔记"    body ="""# Python 写入 Joplin 测试笔记这是一条通过 Joplin Data API 自动创建的笔记。## 记录内容- 支持 Markdown- 支持代码块- 支持自动化写入- 可以继续扩展为知识库归档工具```pythonprint("Hello, Joplin!")```"""    note = create_note(title, body)print("Note created successfully.")print("Note ID:", note["id"])print("Title:", note["title"])
运行后,打开 Joplin,就可以看到新创建的笔记。
这一步其实已经完成了最基础的自动化写入流程:
Python 文本内容 → Joplin API → Joplin 本地笔记

五、自动创建指定笔记本

如果希望把自动生成的内容统一放到某个笔记本中,可以先通过 API 创建一个笔记本。
Joplin 中的笔记本在 API 里叫 folders
import requestsJOPLIN_PORT =41184JOPLIN_TOKEN ="YOUR_JOPLIN_TOKEN"defcreate_folder(title):    url =f"http://localhost:{JOPLIN_PORT}/folders"    params ={"token": JOPLIN_TOKEN}    data ={"title": title}    response = requests.post(url, params=params, json=data, timeout=10)    response.raise_for_status()return response.json()if __name__ =="__main__":    folder = create_folder("自动归档")print("Folder created successfully.")print("Folder ID:", folder["id"])
创建笔记本之后,再创建笔记时传入 parent_id,就可以把笔记放入指定笔记本。
defcreate_note_in_folder(title, body, folder_id):    url =f"http://localhost:{JOPLIN_PORT}/notes"    params ={"token": JOPLIN_TOKEN}    data ={"title": title,"body": body,"parent_id": folder_id}    response = requests.post(url, params=params, json=data, timeout=10)    response.raise_for_status()return response.json()
完整调用示例:
if __name__ =="__main__":    folder = create_folder("自动归档")    note = create_note_in_folder(        title="自动归档测试",        body="# 自动归档测试\n\n这条笔记会进入指定笔记本。",        folder_id=folder["id"])print("Note created in folder.")print("Note ID:", note["id"])

六、查询已有笔记本,避免重复创建

实际使用时,不建议每次都创建一个新笔记本。更合理的做法是:
  1. 先查询已有笔记本;
  2. 如果目标笔记本存在,就直接使用;
  3. 如果不存在,再创建。
下面是一个简单封装:
import requestsJOPLIN_PORT =41184JOPLIN_TOKEN ="YOUR_JOPLIN_TOKEN"defjoplin_url(path):returnf"http://localhost:{JOPLIN_PORT}{path}"defget_folders():    response = requests.get(        joplin_url("/folders"),        params={"token": JOPLIN_TOKEN},        timeout=10)    response.raise_for_status()return response.json()["items"]deffind_folder_by_title(title):    folders = get_folders()for folder in folders:if folder["title"]== title:return folderreturnNonedefcreate_folder(title):    response = requests.post(        joplin_url("/folders"),        params={"token": JOPLIN_TOKEN},        json={"title": title},        timeout=10)    response.raise_for_status()return response.json()defget_or_create_folder(title):    folder = find_folder_by_title(title)if folder:return folderreturn create_folder(title)defcreate_note(title, body, folder_id=None):    data ={"title": title,"body": body}if folder_id:        data["parent_id"]= folder_id    response = requests.post(        joplin_url("/notes"),        params={"token": JOPLIN_TOKEN},        json=data,        timeout=10)    response.raise_for_status()return response.json()if __name__ =="__main__":    folder = get_or_create_folder("自动归档")    markdown_body ="""# 自动写入示例这是一条自动写入 Joplin 的 Markdown 笔记。## 小结通过 Joplin API,可以很方便地把外部内容沉淀到本地知识库中。"""    note = create_note(        title="Joplin API 自动写入示例",        body=markdown_body,        folder_id=folder["id"])print("Created note:", note["title"])
这样就可以避免反复创建同名笔记本。

七、更新已有笔记

除了创建笔记,也可以修改已有笔记。
Joplin API 使用 PUT /notes/:id 更新笔记。比如只修改正文:
import requestsJOPLIN_PORT =41184JOPLIN_TOKEN ="YOUR_JOPLIN_TOKEN"defupdate_note_body(note_id, new_body):    url =f"http://localhost:{JOPLIN_PORT}/notes/{note_id}"    params ={"token": JOPLIN_TOKEN}    data ={"body": new_body}    response = requests.put(url, params=params, json=data, timeout=10)    response.raise_for_status()return response.json()if __name__ =="__main__":    note_id ="YOUR_NOTE_ID"    new_body ="""# 更新后的内容这条笔记已经通过 Python 脚本更新。"""    note = update_note_body(note_id, new_body)print("Updated note:", note["title"])
需要注意的是,Joplin 的 PUT 更新并不是必须传入完整笔记数据。只传入需要修改的字段即可,比如只传 title,就只修改标题;只传 body,就只修改正文。

八、给笔记添加标签

标签也是知识管理中很实用的一部分。
可以先创建标签:
defcreate_tag(title):    response = requests.post(f"http://localhost:{JOPLIN_PORT}/tags",        params={"token": JOPLIN_TOKEN},        json={"title": title},        timeout=10)    response.raise_for_status()return response.json()
然后把标签绑定到笔记:
defadd_tag_to_note(tag_id, note_id):    response = requests.post(f"http://localhost:{JOPLIN_PORT}/tags/{tag_id}/notes",        params={"token": JOPLIN_TOKEN},        json={"id": note_id},        timeout=10)    response.raise_for_status()return response.json()
示例:
if __name__ =="__main__":    tag = create_tag("Python自动化")    note_id ="YOUR_NOTE_ID"    add_tag_to_note(tag["id"], note_id)print("Tag added to note.")
这样就可以根据来源、项目、主题等信息自动给笔记打标签。

九、一个更完整的封装版本

下面给出一个稍微完整一点的脚本。它可以:
  • 自动检测 Joplin 服务;
  • 自动创建或查找笔记本;
  • 创建 Markdown 笔记;
  • 可选添加标签。
注意:下面这段 Python 代码同样包含 Markdown 代码块,因此外层也使用四个反引号。
import requestsfrom datetime import datetimeclassJoplinClient:def__init__(self, token, port=41184):        self.token = token        self.port = port        self.base_url =f"http://localhost:{port}"defrequest(self, method, path,**kwargs):        params = kwargs.pop("params",{})        params["token"]= self.token        response = requests.request(            method=method,            url=f"{self.base_url}{path}",            params=params,            timeout=10,**kwargs)        response.raise_for_status()if response.text:return response.json()returnNonedefping(self):        response = requests.get(f"{self.base_url}/ping", timeout=5)return response.text =="JoplinClipperServer"defget_folders(self):        data = self.request("GET","/folders")return data.get("items",[])deffind_folder(self, title):for folder in self.get_folders():if folder.get("title")== title:return folderreturnNonedefcreate_folder(self, title):return self.request("POST","/folders",            json={"title": title})defget_or_create_folder(self, title):        folder = self.find_folder(title)if folder:return folderreturn self.create_folder(title)defcreate_note(self, title, body, folder_id=None):        data ={"title": title,"body": body}if folder_id:            data["parent_id"]= folder_idreturn self.request("POST","/notes",            json=data)defcreate_tag(self, title):return self.request("POST","/tags",            json={"title": title})defadd_tag_to_note(self, tag_id, note_id):return self.request("POST",f"/tags/{tag_id}/notes",            json={"id": note_id})if __name__ =="__main__":    TOKEN ="YOUR_JOPLIN_TOKEN"    client = JoplinClient(token=TOKEN)ifnot client.ping():raise RuntimeError("Joplin API service is not available.")    folder = client.get_or_create_folder("自动归档")    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")    body =f"""# Joplin API 自动写入测试创建时间:{now}## 内容摘要这是一条通过 Python 自动写入 Joplin 的 Markdown 笔记。## 使用场景- 自动保存技术笔记- 自动生成项目日志- 自动归档学习材料- 自动整理外部文本内容## 代码片段```pythonprint("Write to Joplin by API")```"""    note = client.create_note(        title=f"自动写入测试 - {now}",        body=body,        folder_id=folder["id"])    tag = client.create_tag("自动化")    client.add_tag_to_note(tag["id"], note["id"])print("Note created successfully.")print("Title:", note["title"])print("ID:", note["id"])
运行后,Joplin 中会自动出现一条新的 Markdown 笔记,并进入“自动归档”笔记本。效果如下:

十、为什么这里要用四个反引号

普通 Markdown 代码块通常写成:
```pythonprint("hello")```
但是如果代码块内部本身也包含三反引号,例如 Python 字符串里保存了一段 Markdown:
body = """```pythonprint("hello")```"""
那么外层如果仍然使用三个反引号,渲染器就会把内部的 ```python 误判为代码块边界,导致代码块提前结束。
解决方式是把外层代码围栏加长,例如用四个反引号:
````pythonbody = """```pythonprint("hello")```"""````
Markdown 的规则是:只有同样长度或更长的代码围栏,才会结束当前代码块。因此外层用四个反引号时,内部三个反引号就只会被当作普通文本,不会破坏渲染结构。

十一、可以进一步扩展的方向

Joplin API 的价值不只是创建一条笔记,而是可以把很多重复性的整理工作自动化。
例如:
  • 把每日工作总结自动写入 Joplin;
  • 把代码运行结果自动归档;
  • 把实验参数和计算结果自动生成实验日志;
  • 把网页摘要、论文笔记、会议记录统一写入本地知识库;
  • 根据不同项目自动放入不同笔记本;
  • 根据关键词自动添加标签;
  • 定期把某个文件夹中的 Markdown 文件同步进 Joplin。
从这个角度看,Joplin 不只是一个笔记软件,也可以成为一个本地知识库入口。只要外部内容能够整理成 Markdown,就可以通过 API 自动写入 Joplin。

十二、几个使用建议

第一,token 不要写进公开代码仓库。
如果脚本只是自己本地使用,可以先写在代码里测试。正式使用时,更推荐放到环境变量或单独配置文件中。
第二,优先使用 Markdown。
Joplin 对 Markdown 支持很好,标题、列表、代码块、引用块、表格等内容都可以较好保留。自动写入时,尽量先把内容整理成规范 Markdown。
第三,建立固定的笔记本结构。
比如:
自动归档├── 技术笔记├── 项目日志├── 学习记录└── 临时收集
这样后续自动写入时会更清晰。
第四,先创建,再更新。
对于自动化脚本来说,可以先创建一条笔记,然后记录 note id。后续如果需要追加内容,就通过 note id 更新这条笔记。

结语

Joplin 的开放性是它很大的优势。通过本地 API,可以把 Joplin 从一个“手动记录工具”扩展成一个“自动化知识库”。Python 脚本负责采集和整理内容,Joplin 负责保存、搜索和同步。两者结合起来,就可以形成一个非常实用的个人知识管理工作流。对于技术学习、项目记录、代码实验和资料归档来说,这种方式足够简单,也足够灵活。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 06:43:54 HTTP/2.0 GET : https://f.mffb.com.cn/a/499665.html
  2. 运行时间 : 0.098659s [ 吞吐率:10.14req/s ] 内存消耗:4,837.88kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3b69ffc1f2426414941cb80972eab796
  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.000672s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000888s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000325s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000313s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000504s ]
  6. SELECT * FROM `set` [ RunTime:0.000208s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000557s ]
  8. SELECT * FROM `article` WHERE `id` = 499665 LIMIT 1 [ RunTime:0.000888s ]
  9. UPDATE `article` SET `lasttime` = 1783032234 WHERE `id` = 499665 [ RunTime:0.000820s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000235s ]
  11. SELECT * FROM `article` WHERE `id` < 499665 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000484s ]
  12. SELECT * FROM `article` WHERE `id` > 499665 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003303s ]
  13. SELECT * FROM `article` WHERE `id` < 499665 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001009s ]
  14. SELECT * FROM `article` WHERE `id` < 499665 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002319s ]
  15. SELECT * FROM `article` WHERE `id` < 499665 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.012290s ]
0.100504s