当前位置:首页>python>5 个超实用 Python 脚本,轻松生成高质量合成数据

5 个超实用 Python 脚本,轻松生成高质量合成数据

  • 2026-03-27 01:42:50
5 个超实用 Python 脚本,轻松生成高质量合成数据
合成数据,顾名思义,是通过人工方式生成的、而非从现实场景中采集的数据。这类数据在形态上与真实数据高度相似,同时能有效规避数据隐私问题,还能大幅降低数据采集的成本。借助合成数据,开发者可便捷地开展软件和模型测试,还能模拟产品上线后的运行表现,完成各类实验验证。
目前已有 Faker、SDV、SynthCity 等专门用于生成合成数据的库,大语言模型(LLM)也被广泛应用于该场景。但本文将摒弃对这些外部库和 AI 工具的依赖,教你通过编写原生 Python 脚本实现合成数据生成。这种方式能让你更深入地理解数据集的构建逻辑,以及数据偏差和错误的产生原因。我们将从简单的基础脚本入手,掌握核心实现思路后,再过渡到专业库的使用会更加得心应手。

01

脚本 1:生成基础随机数据
合成数据生成的入门操作,可从构建表格型数据开始。例如,若需要一套虚拟的客户数据集用于内部演示,即可通过以下脚本生成 CSV 格式的合成数据:
import csv
import random
from datetime import datetime, timedelta

# 设置随机种子,保证结果可复现
random.seed(42)

# 定义可选的国家和会员套餐类型
countries = ["加拿大""英国""阿联酋""德国""美国"]
plans = ["免费版""基础版""专业版""企业版"]

# 生成随机的注册日期
defrandom_signup_date():
    start = datetime(202411)
    end = datetime(202611)
    delta_days = (end - start).days
return (start + timedelta(days=random.randint(0, delta_days))).date().isoformat()

rows = []
# 生成1000条客户数据
for i in range(11001):
    age = random.randint(1870)  # 随机生成18-70岁的年龄
    country = random.choice(countries)  # 随机选择国家
    plan = random.choice(plans)  # 随机选择套餐
    monthly_spend = round(random.uniform(0500), 2)  # 随机生成月消费额,保留2位小数

    rows.append({
"客户编号"f"CUST{i:05d}",
"年龄": age,
"国家": country,
"会员套餐": plan,
"月消费额(元)": monthly_spend,
"注册日期": random_signup_date()
    })

# 将数据写入CSV文件
with open("customers.csv""w", newline="", encoding="utf-8"as f:
    writer = csv.DictWriter(f, fieldnames=rows[0].keys())
    writer.writeheader()  # 写入表头
    writer.writerows(rows)  # 写入数据行

print("客户数据已保存至customers.csv")
输出结果示例
customers.csv 文件包含 1000 条客户数据,前 10 条数据如下:
客户编号
年龄
国家
会员套餐
月消费额(元)
注册日期
CUST00001
58
加拿大
免费版
370.78
2024-09-07
CUST00002
32
英国
免费版
338.35
2025-07-12
CUST00003
23
美国
企业版
15.89
2024-04-05
CUST00004
31
英国
免费版
280.62
2025-10-27
CUST00005
62
美国
企业版
110.22
2025-08-26
CUST00006
35
加拿大
基础版
349.07
2024-12-14
CUST00007
35
英国
基础版
478.61
2024-12-10
CUST00008
24
加拿大
企业版
48.36
2024-12-18
CUST00009
56
阿联酋
免费版
364.87
2025-07-03
CUST00010
25
德国
免费版
276.02
2025-10-05
该脚本的实现逻辑十分简洁:定义数据字段、指定各字段的取值范围,随后循环生成数据行并写入文件。其中, `random` 模块可实现整数、浮点数的随机生成,以及随机选择、抽样等操作; `csv` 模块则专门用于读写行式的表格数据。
这类纯随机生成的数据集适用于以下场景:
  • 前端页面演示
  • 数据仪表盘测试
  • API 接口开发
  • SQL 语法学习
  • 输入流水线的单元测试
但这种方法存在一个核心缺陷:所有字段的取值均为完全随机,导致生成的数据显得生硬、不符合现实规律。比如企业版用户的月消费可能仅为 2 元,而免费版用户的月消费却高达 400 元;不同年龄段的用户行为特征完全一致,因为数据背后没有建立任何逻辑关联。
在实际业务中,数据往往存在明显的内在规律。因此,我们可以为数据生成添加字段间的关联规则,让合成数据更贴合现实,具体可做如下优化:
  • 企业版用户的消费额几乎不可能为 0
  • 消费额的取值范围应与会员套餐类型强相关
  • 中老年用户的平均消费额可略高于年轻用户
  • 不同套餐的用户占比应存在合理差异
以下是添加了逻辑控制的优化版脚本:
import csv
import random

random.seed(42)

plans = ["免费版""基础版""专业版""企业版"]

# 按权重随机选择套餐(模拟真实的用户占比)
defchoose_plan():
    roll = random.random()
if roll < 0.45:  # 45%的用户选择免费版
return"免费版"
if roll < 0.75:  # 30%的用户选择基础版
return"基础版"
if roll < 0.93:  # 18%的用户选择专业版
return"专业版"
return"企业版"# 7%的用户选择企业版

# 根据年龄和套餐生成合理的消费额
defgenerate_spend(age, plan):
if plan == "免费版":
        base = random.uniform(010)
elif plan == "基础版":
        base = random.uniform(1060)
elif plan == "专业版":
        base = random.uniform(50180)
else:
        base = random.uniform(150500)

# 40岁及以上用户,消费额上浮15%
if age >= 40:
        base *= 1.15

return round(base, 2)

rows = []
for i in range(11001):
    age = random.randint(1870)
    plan = choose_plan()
    spend = generate_spend(age, plan)

    rows.append({
"客户编号"f"CUST{i:05d}",
"年龄": age,
"会员套餐": plan,
"月消费额(元)": spend
    })

with open("controlled_customers.csv""w", newline="", encoding="utf-8"as f:
    writer = csv.DictWriter(f, fieldnames=rows[0].keys())
    writer.writeheader()
    writer.writerows(rows)

print("带逻辑控制的客户数据已保存至controlled_customers.csv")
优化版脚本输出示例
controlled_customers.csv 文件前 10 条数据如下:
客户编号
年龄
会员套餐
月消费额(元)
CUST00001
58
免费版
8.53
CUST00002
33
免费版
7.36
CUST00003
61
基础版
42.86
CUST00004
55
免费版
0.34
CUST00005
31
免费版
6.02
CUST00006
53
免费版
7.47
CUST00007
52
免费版
5.17
CUST00008
35
专业版
50.84
CUST00009
69
免费版
4.86
CUST00010
35
免费版
9.57
优化后的数据集具备了符合现实的业务规律,不再是无意义的随机数据,而是对用户行为的合理模拟。实现这类数据控制的核心技巧包括:
  • 为分类字段设置权重抽样
  • 为数值字段定义贴合业务的最值范围
  • 添加字段间的条件逻辑关联
  • 刻意加入少量罕见的边缘案例
  • 按低比例插入缺失值
  • 让特征之间存在相关性,而非相互独立

02

脚本 2:基于流程模拟生成合成数据
基于流程模拟的方式,是生成高逼真度合成数据的最优方案之一。这种方式并非直接为各字段赋值,而是通过模拟真实的业务流程,让数据成为流程运行的自然产物。例如,模拟小型仓库的订单处理流程:订单下达→库存减少→库存低于阈值触发补货。
import csv
import random
from datetime import datetime, timedelta

random.seed(42)

# 初始化仓库库存
inventory = {
"商品A"120,
"商品B"80,
"商品C"50
}

rows = []
current_time = datetime(202611)  # 模拟起始时间

# 模拟30天的仓库操作
for day in range(30):
for product in inventory:
# 生成当日该商品的订单数量
        daily_orders = random.randint(012)

# 处理每个订单
for _ in range(daily_orders):
            qty = random.randint(15)  # 每个订单的购买数量
            before = inventory[product]  # 下单前库存

# 判断库存是否充足,完成发货或生成待发货订单
if inventory[product] >= qty:
                inventory[product] -= qty
                status = "已发货"
else:
                status = "待发货"

            rows.append({
"操作时间": current_time.isoformat(),
"商品名称": product,
"数量": qty,
"操作前库存": before,
"操作后库存": inventory[product],
"操作状态": status
            })

# 库存低于20时触发补货
if inventory[product] < 20:
            restock = random.randint(3080)  # 补货数量
            inventory[product] += restock
            rows.append({
"操作时间": current_time.isoformat(),
"商品名称": product,
"数量": restock,
"操作前库存": inventory[product] - restock,
"操作后库存": inventory[product],
"操作状态""补货"
            })

# 时间推进一天
    current_time += timedelta(days=1)

# 将模拟数据写入CSV文件
with open("warehouse_sim.csv""w", newline="", encoding="utf-8"as f:
    writer = csv.DictWriter(f, fieldnames=rows[0].keys())
    writer.writeheader()
    writer.writerows(rows)

print("仓库流程模拟数据已保存至warehouse_sim.csv")
输出结果示例
warehouse_sim.csv 文件包含 557 条仓库操作数据,前 10 条如下:
操作时间
商品名称
数量
操作前库存
操作后库存
操作状态
2026-01-01T00:00:00
商品 A
1
120
119
已发货
2026-01-01T00:00:00
商品 A
1
119
118
已发货
2026-01-01T00:00:00
商品 A
3
118
115
已发货
2026-01-01T00:00:00
商品 A
2
115
113
已发货
2026-01-01T00:00:00
商品 A
2
113
111
已发货
2026-01-01T00:00:00
商品 A
2
111
109
已发货
2026-01-01T00:00:00
商品 A
1
109
108
已发货
2026-01-01T00:00:00
商品 A
5
108
103
已发货
2026-01-01T00:00:00
商品 A
1
103
102
已发货
2026-01-01T00:00:00
商品 A
5
102
97
已发货
这种生成方式的优势在于,数据是系统行为的产物,其字段间的关联关系远比直接随机生成更贴合现实。除仓库管理外,还可将该思路应用于以下业务流程的模拟:
  • 客服中心的排队叫号流程
  • 网约车的订单与司机匹配流程
  • 贷款的申请与审批流程
  • 会员的订阅与流失流程
  • 患者的预约就诊流程
  • 网站的流量与转化流程

03

脚本 3:生成时间序列合成数据
合成数据并非仅局限于静态表格,实际业务中很多系统都会产生时序数据,例如 APP 访问量、传感器采集数据、每小时订单量、服务器响应时间等。以下脚本实现了带有工作日/周末规律的网站小时级访问量时序数据生成:
import csv
import random
from datetime import datetime, timedelta

random.seed(42)

# 时序数据起始时间:2026年1月1日0点
start = datetime(202611000)
# 生成30天的小时级数据,共720个时间点
hours = 24 * 30
rows = []

for i inrange(hours):
    ts 
= start + timedelta(hours=i)  # 生成当前时间戳
    weekday = ts.weekday()  # 判断是否为工作日(0-4为工作日,5-6为周末)

# 基础访问量:工作日120,周末80
base = 120
if weekday >= 5:
base = 80

# 按时段调整基础访问量
    hour = ts.hour
if8 <= hour <= 11:  # 早高峰8-11点,访问量+60
base += 60
    elif 18 <= hour <= 21:  # 晚高峰18-21点,访问量+40
base += 40
    elif 0 <= hour <= 5:  # 凌晨0-5点,访问量-30
base -= 30

# 基于高斯分布生成最终访问量,保证非负
    visits = max(0int(random.gauss(base15)))

    rows.append({
"时间戳": ts.isoformat(),
"访问量": visits
    })

# 写入CSV文件
with open("traffic_timeseries.csv""w", newline="", encoding="utf-8"as f:
    writer 
= csv.DictWriter(f, fieldnames=["时间戳""访问量"])
    writer.writeheader()
    writer.writerows(rows)

print("网站访问量时序数据已保存至traffic_timeseries.csv")
输出结果示例
traffic_timeseries.csv 文件包含 720 条时序数据,前 10 条如下:
时间戳
访问量
2026-01-01T00:00:00
87
2026-01-01T01:00:00
87
2026-01-01T02:00:00
88
2026-01-01T03:00:00
100
2026-01-01T04:00:00
88
2026-01-01T05:00:00
67
2026-01-01T06:00:00
124
2026-01-01T07:00:00
115
2026-01-01T08:00:00
176
2026-01-01T09:00:00
181
该实现思路的优势在于,在保证脚本易理解、易调试的前提下,融入了时序数据的核心特征:趋势性、随机性和周期性。

04

脚本 4:生成行为事件日志
事件日志是另一类实用的合成数据形式,适用于产品数据分析和工作流测试。与“一行数据对应一个用户”的静态表格不同,事件日志采用“一行数据对应一个行为”的形式,记录用户的全流程操作。
import csv
import random
from datetime import datetime, timedelta

random.seed(42)

# 定义用户可能的行为事件
events = ["注册""登录""浏览页面""加入购物车""下单购买""登出"]

rows = []
start = datetime(202611)  # 日志起始时间

# 生成200个用户的行为日志
for user_id inrange(1201):
    # 每个用户生成5-30个行为事件
    event_count 
= random.randint(530)
# 随机生成用户的首次行为时间(起始时间后0-10天)
    current_time = start + timedelta(days=random.randint(010))

for _ inrange(event_count):
event
= random.choice(events)

# 下单购买事件:60%概率生成消费金额,其余为0
ifevent == "下单购买" and random.random() < 0.6:
value = round(random.uniform(10300), 2)
else:
value = 0.0

        rows.append({
"用户编号": f"USER{user_id:04d}",
"事件时间": current_time.isoformat(),
"事件名称"event,
"事件金额(元)"value
        })

# 行为事件的时间间隔:1-180分钟
        current_time += timedelta(minutes=random.randint(1180))

# 写入CSV文件
with open("event_log.csv""w", newline="", encoding="utf-8"as f:
    writer 
= csv.DictWriter(f, fieldnames=rows[0].keys())
    writer.writeheader()
    writer.writerows(rows)

print("用户行为事件日志已保存至event_log.csv")
输出结果示例
event_log.csv 文件包含 3338 条行为日志,前 10 条如下:
用户编号
事件时间
事件名称
事件金额(元)
USER0001
2026-01-02T00:00:00
注册
0.0
USER0001
2026-01-02T01:11:00
登录
0.0
USER0001
2026-01-02T02:09:00
登录
0.0
USER0001
2026-01-02T02:36:00
登出
0.0
USER0001
2026-01-02T04:56:00
注册
0.0
USER0001
2026-01-02T07:28:00
加入购物车
0.0
USER0001
2026-01-02T07:37:00
注册
0.0
USER0001
2026-01-02T08:01:00
登录
0.0
USER0001
2026-01-02T09:01:00
下单购买
0.0
USER0001
2026-01-02T11:25:00
登录
0.0
事件日志格式的合成数据适用于以下场景:
  • 转化漏斗分析
  • 数据分析流水线测试
  • 商业智能(BI)仪表盘开发
  • 用户会话行为还原
  • 异常行为检测实验
优化事件日志逼真度的一个实用技巧:让事件之间存在先后依赖关系。例如,“下单购买”事件通常应跟随“登录”或“浏览页面”事件,而非独立出现。

05

脚本 5:基于模板生成文本类合成数据
合成数据在自然语言处理(NLP)领域也具有重要价值,并非所有场景都需要依赖大语言模型,通过 模板+可控变体 的方式,即可快速构建有效的文本数据集。例如,生成客服工单的训练数据:
import json
import random

random.seed(42)

# 定义工单问题类型与基础话术
issues = [
    ("账单问题""我的会员订阅被重复扣费了"),
    ("登录问题""我无法登录自己的账号"),
    ("物流问题""我的订单至今还未送达"),
    ("退款问题""我想申请退款"),
]

# 定义工单的语气前缀
tones = ["麻烦帮忙处理""此事十分紧急""能否帮忙核查一下""我需要技术支持"]

records = []

# 生成100条客服工单数据
for _ in range(100):
    label, message = random.choice(issues)
    tone = random.choice(tones)

# 拼接生成完整的工单文本
    text = f"{tone}{message}。"
    records.append({
"工单文本": text,
"问题标签": label
    })

# 将数据写入JSONL文件(NLP任务常用格式)
with open("support_tickets.jsonl""w", encoding="utf-8"as f:
for item in records:
        f.write(json.dumps(item, ensure_ascii=False) + "\n")

print("客服工单文本数据已保存至support_tickets.jsonl")
输出结果示例
support_tickets.jsonl 文件为每行一个 JSON 对象的格式,前 14 条如下:
  1. `{"工单文本": "麻烦帮忙处理。我的会员订阅被重复扣费了。", "问题标签": "账单问题"}`
  2. `{"工单文本": "此事十分紧急。我的订单至今还未送达。", "问题标签": "物流问题"}`
  3. `{"工单文本": "此事十分紧急。我无法登录自己的账号。", "问题标签": "登录问题"}`
  4. `{"工单文本": "麻烦帮忙处理。我的会员订阅被重复扣费了。", "问题标签": "账单问题"}`
  5. `{"工单文本": "麻烦帮忙处理。我想申请退款。", "问题标签": "退款问题"}`
  6. `{"工单文本": "麻烦帮忙处理。我的会员订阅被重复扣费了。", "问题标签": "账单问题"}`
  7. `{"工单文本": "此事十分紧急。我无法登录自己的账号。", "问题标签": "登录问题"}`
  8. `{"工单文本": "此事十分紧急。我的会员订阅被重复扣费了。", "问题标签": "账单问题"}`
  9. `{"工单文本": "此事十分紧急。我想申请退款。", "问题标签": "退款问题"}`
  10. `{"工单文本": "能否帮忙核查一下。我想申请退款。", "问题标签": "退款问题"}`
  11. `{"工单文本": "此事十分紧急。我的会员订阅被重复扣费了。", "问题标签": "账单问题"}`
  12. `{"工单文本": "能否帮忙核查一下。我想申请退款。", "问题标签": "退款问题"}`
  13. `{"工单文本": "此事十分紧急。我的订单至今还未送达。", "问题标签": "物流问题"}`
  14. `{"工单文本": "能否帮忙核查一下。我无法登录自己的账号。", "问题标签": "登录问题"}`
这种模板化的文本生成方式适用于以下 NLP 场景:
  • 文本分类演示
  • 意图识别模型训练
  • 聊天机器人测试
  • 提示词效果评估

06

总结与注意事项
合成数据生成脚本是高效的开发工具,但如果使用不当,反而会生成无效数据。请务必规避以下常见错误:
  • 让所有字段的取值均为均匀随机,忽略业务规律
  • 忘记为字段建立合理的依赖关系
  • 生成违背业务逻辑的数值(如负的库存、超范围的年龄)
  • 想当然地认为合成数据天然具备隐私安全性
  • 生成的数据过于“干净”,缺少真实场景中的边缘案例和异常值
  • 过度复用单一生成模式,导致数据集缺乏随机性、易被预测
隐私保护 是合成数据生成的核心考量因素:尽管合成数据能降低真实数据的暴露风险,但并非绝对安全。如果生成器的设计与原始敏感数据过度关联,仍可能发生数据泄露。因此,采用 差分隐私 等隐私保护技术来生成合成数据,是当前的重要发展方向。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 13:11:27 HTTP/2.0 GET : https://f.mffb.com.cn/a/481626.html
  2. 运行时间 : 0.149164s [ 吞吐率:6.70req/s ] 内存消耗:4,681.28kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1bf60152c1de7f810b8064b82928f26a
  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.000566s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000620s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002124s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000592s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000494s ]
  6. SELECT * FROM `set` [ RunTime:0.000809s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000546s ]
  8. SELECT * FROM `article` WHERE `id` = 481626 LIMIT 1 [ RunTime:0.002081s ]
  9. UPDATE `article` SET `lasttime` = 1774588287 WHERE `id` = 481626 [ RunTime:0.002300s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000287s ]
  11. SELECT * FROM `article` WHERE `id` < 481626 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000564s ]
  12. SELECT * FROM `article` WHERE `id` > 481626 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.005263s ]
  13. SELECT * FROM `article` WHERE `id` < 481626 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004729s ]
  14. SELECT * FROM `article` WHERE `id` < 481626 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.017485s ]
  15. SELECT * FROM `article` WHERE `id` < 481626 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.020505s ]
0.151013s