当前位置:首页>python>python开发Streamable HTTP MCP应用

python开发Streamable HTTP MCP应用

  • 2026-03-23 20:13:39
python开发Streamable HTTP MCP应用
一、概述

使用python开发,最好的框架是fastmcp,github链接:https://github.com/jlowin/fastmcp

2025 年 5 月 9 日,fastmcp发布v2.3.0版本,正式支持Streamable HTTP

终于等到官方支持了!

注意:2.3.0版本有bug,目前最新版本已经修复了

升级到最新版本

pip install --upgrade fastmcp
二、Streamable HTTP MCP应用

官方demo

server.py

from fastmcp import FastMCPmcp = FastMCP("Demo 🚀")@mcp.tool()def add(a: int, b: int) -> int:    """Add two numbers"""    return a + bif __name__ == "__main__":    mcp.run(transport="streamable-http", host="0.0.0.0", port=8000, path="/mcp")

通过以上8行代码,就简单实现了Streamable HTTP MCP应用。

获取服务器公网ip

通过一个在实际生产环境中,使用的功能,来演示一个Streamable HTTP MCP应用

server.py

import jsonimport requestsfrom fastmcp import FastMCPmcp = FastMCP("Demo 🚀")@mcp.tool()def get_public_ip_address() -> str:    """    获取服务器公网 IP 地址    返回:         str: 当前网络的公网 IP 地址    """    try:        response = requests.get("http://ip-api.com/json")        response.raise_for_status()  # 检查 HTTP 请求是否成功        content = json.loads(response.text)        return content.get("query""Unknown IP")  # 提供默认值以防字段缺失    except requests.RequestException as e:        print(f"请求错误: {e}")        return "Request Failed"    except json.JSONDecodeError as e:        print(f"JSON 解码错误: {e}")        return "Invalid Response"if __name__ == "__main__":    # mcp.run()    mcp.run(transport="streamable-http",            host="0.0.0.0", port=9000, path="/mcp")

运行代码

python server.py

输出:

[05/12/25 10:03:55] INFO     Starting server "public_ip_address"...                                                                                                                                                                                                                         server.py:202INFO:     Started server process [43312]INFO:     Waiting for application startup.INFO:     Application startup complete.INFO:     Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit)

Cherry Studio测试

请确保Cherry Studio版本是最新的,因为新版本,增加了Streamable HTTP支持

添加mcp服务器

名称:public_ip_address_mcp

类型:Streamable HTTP

url:http://localhost:9000/mcp

 添加成功后,点击工具,可以看到工具方法

创建

添加

选择助手

选择

提问公网ip,效果如下:

验证一下公网ip是否正确,打开网页

http://ip-api.com/json

结果是正确的,没问题。

三、MySQL MCP应用

mysql_mcp_server_pro应用,完整代码如下:

server.py

from fastmcp import FastMCPfrom mysql.connector import connect, Errorimport osmcp = FastMCP("operateMysql")def get_db_config():    """从环境变量获取数据库配置信息    返回:        dict: 包含数据库连接所需的配置信息        - host: 数据库主机地址        - port: 数据库端口        - user: 数据库用户名        - password: 数据库密码        - database: 数据库名称    异常:        ValueError: 当必需的配置信息缺失时抛出    """    config = {        "host": os.getenv("MYSQL_HOST""localhost"),        "port"int(os.getenv("MYSQL_PORT""3306")),        "user": os.getenv("MYSQL_USER"),        "password": os.getenv("MYSQL_PASSWORD"),        "database": os.getenv("MYSQL_DATABASE"),    }    print(config)    if not all(        [            config["host"],            config["port"],            config["user"],            config["password"],            config["database"],        ]    ):        raise ValueError("缺少必需的数据库配置")    return config@mcp.tool()def execute_sql(query: str) -> list:    """执行SQL查询语句    参数:        query (str): 要执行的SQL语句,支持多条语句以分号分隔    返回:        list: 包含查询结果的TextContent列表        - 对于SELECT查询:返回CSV格式的结果,包含列名和数据        - 对于SHOW TABLES:返回数据库中的所有表名        - 对于其他查询:返回执行状态和影响行数        - 多条语句的结果以"---"分隔    异常:        Error: 当数据库连接或查询执行失败时抛出    """    config = get_db_config()    try:        with connect(**config) as conn:            with conn.cursor() as cursor:                statements = [stmt.strip() for stmt in query.split(";"if stmt.strip()]                results = []                for statement in statements:                    try:                        cursor.execute(statement)                        # 检查语句是否返回了结果集 (SELECT, SHOW, EXPLAIN, etc.)                        if cursor.description:                            columns = [desc[0for desc in cursor.description]                            rows = cursor.fetchall()                            # 将每一行的数据转换为字符串,特殊处理None值                            formatted_rows = []                            for row in rows:                                formatted_row = [                                    "NULL" if value is None else str(value)                                    for value in row                                ]                                formatted_rows.append(",".join(formatted_row))                            # 将列名和数据合并为CSV格式                            results.append(                                "\n".join([",".join(columns)] + formatted_rows)                            )                        # 如果语句没有返回结果集 (INSERT, UPDATE, DELETE, etc.)                        else:                            conn.commit()  # 只有在非查询语句时才提交                            results.append(f"查询执行成功。影响行数: {cursor.rowcount}")                    except Error as stmt_error:                        # 单条语句执行出错时,记录错误并继续执行                        results.append(                            f"执行语句 '{statement}' 出错: {str(stmt_error)}"                        )                        # 可以在这里选择是否继续执行后续语句,目前是继续                return ["\n---\n".join(results)]    except Error as e:        print(f"执行SQL '{query}' 时出错: {e}")        return [f"执行查询时出错: {str(e)}"]@mcp.tool()def get_table_name(text: str) -> list:    """根据表的中文注释搜索数据库中的表名    参数:        text (str): 要搜索的表中文注释关键词    返回:        list: 包含查询结果的TextContent列表        - 返回匹配的表名、数据库名和表注释信息        - 结果以CSV格式返回,包含列名和数据    """    config = get_db_config()    sql = "SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COMMENT "    sql += f"FROM information_schema.TABLES WHERE TABLE_SCHEMA = '{config['database']}' AND TABLE_COMMENT LIKE '%{text}%';"    return execute_sql(sql)@mcp.tool()def get_table_desc(text: str) -> list:    """获取指定表的字段结构信息    参数:        text (str): 要查询的表名,多个表名以逗号分隔    返回:        list: 包含查询结果的列表        - 返回表的字段名、字段注释等信息        - 结果按表名和字段顺序排序        - 结果以CSV格式返回,包含列名和数据    """    config = get_db_config()    # 将输入的表名按逗号分割成列表    table_names = [name.strip() for name in text.split(",")]    # 构建IN条件    table_condition = "','".join(table_names)    sql = "SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT "    sql += (        f"FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '{config['database']}' "    )    sql += f"AND TABLE_NAME IN ('{table_condition}') ORDER BY TABLE_NAME, ORDINAL_POSITION;"    return execute_sql(sql)@mcp.tool()def get_lock_tables() -> list:    """    获取当前mysql服务器InnoDB 的行级锁    返回:        list: 包含查询结果的TextContent列表    """    sql = """SELECT    p2.`HOST` AS 被阻塞方host,    p2.`USER` AS 被阻塞方用户,    r.trx_id AS 被阻塞方事务id,    r.trx_mysql_thread_id AS 被阻塞方线程号,    TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS 等待时间,    r.trx_query AS 被阻塞的查询,    l.OBJECT_NAME AS 阻塞方锁住的表,    m.LOCK_MODE AS 被阻塞方的锁模式,    m.LOCK_TYPE AS '被阻塞方的锁类型(表锁还是行锁)',    m.INDEX_NAME AS 被阻塞方锁住的索引,    m.OBJECT_SCHEMA AS 被阻塞方锁对象的数据库名,    m.OBJECT_NAME AS 被阻塞方锁对象的表名,    m.LOCK_DATA AS 被阻塞方事务锁定记录的主键值,    p.`HOST` AS 阻塞方主机,    p.`USER` AS 阻塞方用户,    b.trx_id AS 阻塞方事务id,    b.trx_mysql_thread_id AS 阻塞方线程号,    b.trx_query AS 阻塞方查询,    l.LOCK_MODE AS 阻塞方的锁模式,    l.LOCK_TYPE AS '阻塞方的锁类型(表锁还是行锁)',    l.INDEX_NAME AS 阻塞方锁住的索引,    l.OBJECT_SCHEMA AS 阻塞方锁对象的数据库名,    l.OBJECT_NAME AS 阻塞方锁对象的表名,    l.LOCK_DATA AS 阻塞方事务锁定记录的主键值,    IF(p.COMMAND = 'Sleep', CONCAT(p.TIME, ' 秒'), 0) AS 阻塞方事务空闲的时间    FROM performance_schema.data_lock_waits w    INNER JOIN performance_schema.data_locks l ON w.BLOCKING_ENGINE_LOCK_ID = l.ENGINE_LOCK_ID    INNER JOIN performance_schema.data_locks m ON w.REQUESTING_ENGINE_LOCK_ID = m.ENGINE_LOCK_ID    INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID    INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID    INNER JOIN information_schema.PROCESSLIST p ON p.ID = b.trx_mysql_thread_id    INNER JOIN information_schema.PROCESSLIST p2 ON p2.ID = r.trx_mysql_thread_id    ORDER BY 等待时间 DESC;"""    return execute_sql(sql)if __name__ == "__main__":    mcp.run(transport="streamable-http",            host="0.0.0.0", port=9000, path="/mcp")

编译镜像

修改Dockerfile,升级fastmcp

FROM python:3.13.3-alpine3.21ADD . /appRUN pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple && \    pip3 install mysql-connector-python fastmcp -i https://pypi.tuna.tsinghua.edu.cn/simple && \    pip3 install --upgrade fastmcpWORKDIR /appEXPOSE 9000ENTRYPOINT ["python3","/app/server.py"]

编译镜像

docker build -t mysql_mcp_server_pro:v1 .

使用docker-compose启动

docker-compose.yaml

services:  mysql_mcp_server_pro:    image: mysql_mcp_server_pro:v1    container_name: mysql_mcp_server_pro    ports:      - "9090:9000"    environment:      MYSQL_HOST: "192.168.20.128"      MYSQL_PORT: "3306"      MYSQL_USER: "root"      MYSQL_PASSWORD: "abcd@1234"      MYSQL_DATABASE: "test"      TZ: Asia/Shanghai    restart: always

注意修改mysql相关环境变量

运行

docker-compose up -d

Cherry Studio测试

添加MCP服务器

添加智能体mysql8

提示词

使用中文回复。当用户提问中涉及学生、教师、成绩、班级、课程等实体时,需要使用 MySQL MCP 进行数据查询和操作,表结构说明如下:# 学生管理系统数据库表结构说明## 1. 教师表 (teachers)| 字段名 | 类型 | 描述 | 约束 | 示例 ||--------|------|------|------|------|| id | varchar | 教师ID | 主键 | "T001" || name | varchar | 教师姓名 | 必填 | "张建国" || gender | enum | 性别 | "男"或"女" | "男" || subject | varchar | 教授科目 | 必填 | "数学" || title | varchar | 职称 | 必填 | "教授" || phone | varchar | 联系电话 | 必填 | "13812345678" || office | varchar | 办公室位置 | 必填 | "博学楼301" || wechat | varchar | 微信(可选) | 可选 | "lily_teacher" || isHeadTeacher | enum | 是否为班主任,"true"或"false" | 可选 | true |## 2. 班级表 (classes)| 字段名 | 类型 | 描述 | 约束 | 示例 ||--------|------|------|------|------|| id | varchar | 班级ID | 主键 | "202301" || className | varchar | 班级名称 | 必填 | "2023级计算机1班" || grade | int | 年级 | 必填 | 2023 || headTeacherId | varchar | 班主任ID | 外键(teachers.id) | "T003" || classroom | varchar | 教室位置 | 必填 | "1号楼302" || studentCount | int | 学生人数 | 必填 | 35 || remark | varchar | 备注信息 | 可选 | "市级优秀班集体" |## 3. 课程表 (courses)| 字段名 | 类型 | 描述 | 约束 | 示例 ||--------|------|------|------|------|| id | varchar | 课程ID | 主键 | "C001" || courseName | varchar | 课程名称 | 必填 | "高等数学" || credit | int | 学分 | 必填 | 4 || teacherId | varchar | 授课教师ID | 外键(teachers.id) | "T001" || semester | varchar | 学期 | 格式"YYYY-N" | "2023-1" || type | enum | 课程类型 | "必修"或"选修" | "必修" || prerequisite | varchar | 先修课程ID | 可选,外键(courses.id) | "C003" |## 4. 学生表 (students)| 字段名 | 类型 | 描述 | 约束 | 示例 ||--------|------|------|------|------|| id | varchar | 学号 | 主键 | "S20230101" || name | varchar | 学生姓名 | 必填 | "王强" || gender | enum | 性别 | "男"或"女" | "男" || birthDate | date | 出生日期 | 必填 | date("2005-01-15") || enrollmentDate | date | 入学日期 | 必填 | date("2023-8-1") || classId | varchar | 班级ID | 外键(classes.id) | "202301" || phone | varchar | 联系电话 | 必填 | "13812345678" || email | varchar | 电子邮箱 | 必填 | "20230101@school.edu.cn" || emergencyContact | varchar | 紧急联系人电话 | 必填 | "13876543210" || address | varchar | 家庭住址 | 必填 | "北京市海淀区中关村大街1栋101室" || height | int | 身高(cm) | 必填 | 175 || weight | int | 体重(kg) | 必填 | 65 || healthStatus | enum | 健康状况 | 必填,"良好"或"一般‌"或"较差" | "良好" |## 5. 成绩表 (scores)| 字段名 | 类型 | 描述 | 约束 | 示例 ||--------|------|------|------|------|| id | varchar | 成绩记录ID | 主键 | "S20230101C001" || studentId | varchar | 学生ID | 外键(students.id) | "S20230101" || courseId | varchar | 课程ID | 外键(courses.id) | "C001" || score | int | 综合成绩 | 0-100 | 85 || examDate | date | 考试日期 | 必填 | date("2024-5-20") || usualScore | int | 平时成绩 | 0-100 | 90 || finalScore | int | 期末成绩 | 0-100 | 80 |### 补考成绩记录说明补考记录在_id后添加"_M"后缀,如"S20230101C001_M"## 表关系说明1. **一对多关系**:   - 一个班级(classes)对应多个学生(students)   - 一个教师(teachers)可以教授多门课程(courses)   - 一个学生(students)有多条成绩记录(scores)2. **外键约束**:   - students.classId → classes.id   - courses.teacherId → teachers.id   - scores.studentId → students.id   - scores.courseId → courses.id   - classes.headTeacherId → teachers.id

mysql表结构

班级表

CREATE TABLE `classes` (  `id` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级ID,示例:202301',  `className` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级名称,示例:2023级计算机1班',  `grade` int NOT NULL COMMENT '年级,示例:2023',  `headTeacherId` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班主任ID,外键(teachers.id),示例:T003',  `classroom` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教室位置,示例:1号楼302',  `studentCount` int NOT NULL COMMENT '学生人数,示例:35',  `remark` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注信息,示例:市级优秀班集体',  PRIMARY KEY (`id`),  KEY `headTeacherId` (`headTeacherId`),  CONSTRAINT `headTeacherId` FOREIGN KEY (`headTeacherId`) REFERENCES `teachers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='班级表';

课程表

CREATE TABLE `courses` (  `id` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程ID,示例:C001',  `courseName` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程名称,示例:高等数学',  `credit` int NOT NULL COMMENT '学分,示例:4',  `teacherId` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授课教师ID,外键(teachers.id),示例:T001',  `semester` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '学期,格式"YYYY-N",示例:2023-1',  `type` enum('必修','选修'CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '选修' COMMENT '课程类型,"必修"或"选修",示例:选修',  `prerequisite` varchar(255COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '先修课程ID,可选,外键(courses.id),示例:C003',  PRIMARY KEY (`id`),  KEY `teacherId` (`teacherId`),  CONSTRAINT `teacherId` FOREIGN KEY (`teacherId`) REFERENCES `teachers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程表';

成绩表

CREATE TABLE `scores` (  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '成绩记录ID,示例:S20230101C001',  `studentId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生ID,外键(students.id),示例:S20230101',  `courseId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程ID,外键(courses.id),示例:C001',  `score` int NOT NULL COMMENT '综合成绩,0-100,示例:85',  `examDate` date NOT NULL COMMENT '考试日期,示例:2024-5-20',  `usualScore` int DEFAULT '0' COMMENT '平时成绩,0-100,示例:90',  `finalScore` int DEFAULT '0' COMMENT '期末成绩,0-100,示例:80',  PRIMARY KEY (`id`),  KEY `studentId` (`studentId`),  KEY `courseId` (`courseId`),  CONSTRAINT `courseId` FOREIGN KEY (`courseId`) REFERENCES `courses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,  CONSTRAINT `studentId` FOREIGN KEY (`studentId`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成绩表';

学生表

CREATE TABLE `students` (  `id` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学号,示例:S20230101',  `name` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生姓名,示例:王强',  `gender` enum('男','女'CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '男' COMMENT '性别,"男"或"女",示例:男',  `birthDate` datetime NOT NULL COMMENT '出生日期,示例:2005-01-15',  `classId` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级ID,外键(classes.id),示例:202301',  `phone` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '联系电话,示例:13812345678',  `email` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '电子邮箱,示例:20230101@school.edu.cn',  `emergencyContact` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '紧急联系人电话,示例:13876543210',  `address` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '家庭住址,示例:北京市海淀区中关村大街1栋101室',  `height` int NOT NULL COMMENT '身高(cm),示例:175',  `weight` int NOT NULL COMMENT '体重(kg),示例:65',  `healthStatus` enum('良好‌','一般‌','较差'CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '良好‌' COMMENT '健康状况,示例:良好',  PRIMARY KEY (`id`),  KEY `classId` (`classId`),  CONSTRAINT `classId` FOREIGN KEY (`classId`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生表';

教师表

CREATE TABLE `teachers` (  `id` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教师ID,示例:T001',  `name` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教师姓名,示例:张建国',  `gender` enum('男','女'CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '男' COMMENT '性别,"男"或"女",示例:男',  `subject` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教授科目,示例:数学',  `title` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '职称,示例:教授',  `phone` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '联系电话,示例:13812345678',  `office` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '办公室位置,示例:博学楼301',  `wechat` varchar(255CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '微信,示例:lily_teacher',  `isHeadTeacher` enum('true','false'CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT 'false' COMMENT '是否为班主任,示例:true',  PRIMARY KEY (`id`,`office`) USING BTREE,  KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教师表';

将智能体,添加助手

打开助手,选择MCP

提一个问题,李华的老师是谁

效果如下:

文章读完后,你的分享点赞在看,我们都深表感谢!

点击  公众号卡片,关注我们

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 13:04:43 HTTP/2.0 GET : https://f.mffb.com.cn/a/482280.html
  2. 运行时间 : 0.253817s [ 吞吐率:3.94req/s ] 内存消耗:4,845.88kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ef567340059e4cecfca988802f77fd4b
  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.000435s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000555s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002107s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000270s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000536s ]
  6. SELECT * FROM `set` [ RunTime:0.001268s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000630s ]
  8. SELECT * FROM `article` WHERE `id` = 482280 LIMIT 1 [ RunTime:0.005012s ]
  9. UPDATE `article` SET `lasttime` = 1774587883 WHERE `id` = 482280 [ RunTime:0.007495s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001119s ]
  11. SELECT * FROM `article` WHERE `id` < 482280 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001265s ]
  12. SELECT * FROM `article` WHERE `id` > 482280 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001636s ]
  13. SELECT * FROM `article` WHERE `id` < 482280 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.031244s ]
  14. SELECT * FROM `article` WHERE `id` < 482280 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010496s ]
  15. SELECT * FROM `article` WHERE `id` < 482280 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.040689s ]
0.255273s