当前位置:首页>python>Python 从散斑图中提取位移场和应变云图(含代码)

Python 从散斑图中提取位移场和应变云图(含代码)

  • 2026-08-20 13:51:08
Python 从散斑图中提取位移场和应变云图(含代码)
案例代码见文末,感谢您关注PFC小姐姐,麻烦您多多对推文点赞、收藏及转发,并衷心希望您多多指教🙏,帮助PFC小姐姐进步提升。

引言

试样变形过程通常需要通过照片、视频或高速相机图像进行记录。然而如果只是把加载前后的照片放在论文或报告中,能够展示试样外观变化,却很难进一步说明变形的方向、位移的大小以及局部变形集中区域。对于很多试验结果来说,真正有价值的信息并不只是“试样变形了”,而是“哪里变形最大”“变形主要沿什么方向发展”“局部应变是否已经开始集中”。数字图像相关方法,也就是 DIC,正是围绕这一问题展开的。它的基本思想是:在加载前图像中选取局部窗口,在加载后图像中寻找最相似的位置,由此得到该区域的位移;当多个局部窗口都完成匹配后,就可以得到试样表面的位移场,并进一步由位移梯度计算应变场。本文用Python构造一组模拟散斑试样图,生成加载前后图像,并通过简化版图像匹配方法提取位移矢量场和等效应变云图。这个例子并不是替代专业 DIC 软件,而是用来展示 DIC 后处理的基本思路:一张普通散斑图如何从“图像”转化为“位移场”,再进一步转化为论文中常见的“应变云图”。

1、加载前后散斑图

该图展示的是模拟生成的加载前后散斑试样图。左侧为加载前图像,右侧为加载后图像。试样表面分布了大量随机黑白散斑,这些散斑相当于图像匹配中的识别特征。加载后,试样整体发生了轻微压缩、剪切和局部变形集中,因此散斑位置也随之发生变化。这张图的作用是交代 DIC 分析的数据来源。在真实试验中,通常需要在试样表面喷涂随机散斑,并使用相机记录加载过程。散斑质量会直接影响图像匹配结果,散斑过稀、过密、对比度不足或光照变化过强,都可能降低位移计算精度。在本文的模拟图中,加载前后图像看起来差异并不夸张,这也更接近实际 DIC 分析的情况。很多时候,肉眼并不能直接从照片中准确判断局部位移大小,但通过图像匹配,可以把这种细微变化转化为可计算的位移结果。

2、位移矢量场

该图展示的是由加载前后散斑图像匹配得到的位移矢量场。图中的每一个箭头代表一个局部计算窗口的位移结果。箭头方向表示该区域从加载前到加载后的移动方向,箭头长度和颜色表示位移幅值。颜色越亮,说明该位置的位移越大。相比单纯观察加载后照片,位移矢量场能够更清楚地表达试样表面“往哪里动、动了多少”。例如,在压缩或剪切加载条件下,试样不同区域的位移方向可能并不完全一致,局部区域还可能出现明显的位移集中。通过矢量场,可以直接观察整体变形趋势和局部异常变形区域。

    3、等效应变云图

    下图是在位移场基础上进一步计算得到的等效应变云图。位移描述的是点的位置变化,而应变描述的是空间上的变形梯度。简单来说,如果相邻区域的位移差异较大,该位置就会出现较高的应变值。图中颜色越亮,表示局部应变越高,也意味着该区域的变形更集中。可以看到,高应变区并不是均匀分布在整个试样中,而是沿着局部变形带出现集中。这种结果与论文中常见的 DIC 应变云图、有限元应变云图或损伤云图类似,适合用于分析局部化变形、剪切带萌生和破坏前兆。对于试验分析来说,应变云图通常比原始照片更有价值。原始照片只能说明试样发生了可见变形,而应变云图可以进一步指出变形集中区域。若对多个加载阶段进行连续处理,还可以观察高应变区从萌生、扩展到贯通的全过程,从而为破坏机制分析提供更直观的图像依据。

    具体Python如下:

    import osimport numpy as npimport matplotlibmatplotlib.use("Agg")import matplotlib.pyplot as pltfrom scipy.ndimage import gaussian_filter, map_coordinatesnp.random.seed(2026)plt.rcParams["font.family"] = "Times New Roman"plt.rcParams["axes.unicode_minus"] = Falseplt.rcParams["figure.dpi"] = 160plt.rcParams["savefig.dpi"] = 500out_dir = "simple_dic_results_noborder"os.makedirs(out_dir, exist_ok=True)H, W = 620820# 试样区域x_left, x_right = 160660y_top, y_bottom = 80540Y, X = np.mgrid[0:H, 0:W]specimen_mask = (    (X >= x_left) &    (X <= x_right) &    (Y >= y_top) &    (Y <= y_bottom))def set_specimen_view(ax, pad=10):    """    只显示试样附近区域,去掉外围大块背景。    """    ax.set_xlim(x_left - pad, x_right + pad)    ax.set_ylim(y_bottom + pad, y_top - pad)    ax.axis("off")def draw_random_speckles(img, mask, n_dark=2800, n_light=900):    """    在试样区域内生成随机散斑。    """    ys, xs = np.where(mask)    # 暗色散斑    for _ in range(n_dark):        k = np.random.randint(0len(xs))        cx = xs[k]        cy = ys[k]        r = np.random.uniform(1.23.2)        x0 = max(0int(cx - 4))        x1 = min(W, int(cx + 5))        y0 = max(0int(cy - 4))        y1 = min(H, int(cy + 5))        yy, xx = np.mgrid[y0:y1, x0:x1]        disk = (xx - cx) ** 2 + (yy - cy) ** 2 <= r ** 2        img[y0:y1, x0:x1][disk] -= np.random.uniform(0.180.34)    # 亮色散斑    for _ in range(n_light):        k = np.random.randint(0len(xs))        cx = xs[k]        cy = ys[k]        r = np.random.uniform(1.02.4)        x0 = max(0int(cx - 4))        x1 = min(W, int(cx + 5))        y0 = max(0int(cy - 4))        y1 = min(H, int(cy + 5))        yy, xx = np.mgrid[y0:y1, x0:x1]        disk = (xx - cx) ** 2 + (yy - cy) ** 2 <= r ** 2        img[y0:y1, x0:x1][disk] += np.random.uniform(0.060.14)    return imgdef normalized_correlation(a, b):    """    归一化相关系数。    """    aa = a - a.mean()    bb = b - b.mean()    denom = np.sqrt(np.sum(aa ** 2) * np.sum(bb ** 2)) + 1e-12    return np.sum(aa * bb) / denom#生成加载前散斑试样图# 背景(保留但绘图时会裁掉大部分)img_before = np.ones((H, W)) * 0.94img_before += np.random.normal(00.006, size=(H, W))# 试样基底:低频灰度纹理low_freq_noise = gaussian_filter(np.random.normal(01, size=(H, W)), sigma=18)low_freq_noise = (low_freq_noise - low_freq_noise.mean()) / (low_freq_noise.std() + 1e-8)specimen_base = 0.66 + 0.035 * low_freq_noiseimg_before[specimen_mask] = specimen_base[specimen_mask]# 添加散斑img_before = draw_random_speckles(img_before, specimen_mask)# 轻微模糊,模拟相机成像img_before = gaussian_filter(img_before, sigma=0.55)# 不再人为添加试样边框img_before = np.clip(img_before, 01)# 构造加载后的真实位移场,并生成加载后图像xn = (X - x_left) / (x_right - x_left)yn = (Y - y_top) / (y_bottom - y_top)# 基本压缩 + 剪切u_true = 1.5 + 5.0 * (yn - 0.5)v_true = -5.5 * (yn - 0.5)# 局部剪切带,模拟局部变形集中band_center = x_left + (x_right - x_left) * (0.42 + 0.24 * yn)band_width = 32.0shear_band = np.exp(-((X - band_center) / band_width) ** 2)u_true += 4.2 * shear_bandv_true += -2.3 * shear_band# 试样外不发生变形u_true = u_true * specimen_maskv_true = v_true * specimen_mask# 反向映射生成加载后图像coords_y = Y - v_truecoords_x = X - u_trueimg_after = map_coordinates(    img_before,    [coords_y, coords_x],    order=1,    mode="reflect")# 加入轻微拍摄噪声和亮度变化img_after += np.random.normal(00.006, size=(H, W))img_after = 0.985 * img_after + 0.008img_after = np.clip(img_after, 01)# 局部窗口匹配提取位移subset_size = 31half = subset_size // 2search_radius = 10grid_step = 34grid_x = np.arange(x_left + 55, x_right - 55, grid_step)grid_y = np.arange(y_top + 55, y_bottom - 55, grid_step)GX, GY = np.meshgrid(grid_x, grid_y)U = np.zeros_like(GX, dtype=float)V = np.zeros_like(GY, dtype=float)C = np.zeros_like(GX, dtype=float)for iy in range(GY.shape[0]):    for ix in range(GX.shape[1]):        cx = int(GX[iy, ix])        cy = int(GY[iy, ix])        template = img_before[            cy - half: cy + half + 1,            cx - half: cx + half + 1        ]        best_score = -1e9        best_dx = 0        best_dy = 0        for dy in range(-search_radius, search_radius + 1):            for dx in range(-search_radius, search_radius + 1):                tx = cx + dx                ty = cy + dy                patch = img_after[                    ty - half: ty + half + 1,                    tx - half: tx + half + 1                ]                if patch.shape != template.shape:                    continue                score = normalized_correlation(template, patch)                if score > best_score:                    best_score = score                    best_dx = dx                    best_dy = dy        U[iy, ix] = best_dx        V[iy, ix] = best_dy        C[iy, ix] = best_score# 平滑位移场,减少匹配噪声U_smooth = gaussian_filter(U, sigma=0.7)V_smooth = gaussian_filter(V, sigma=0.7)disp_mag = np.sqrt(U_smooth ** 2 + V_smooth ** 2)# 由位移场计算应变场dU_dy, dU_dx = np.gradient(U_smooth, grid_step, grid_step)dV_dy, dV_dx = np.gradient(V_smooth, grid_step, grid_step)exx = dU_dxeyy = dV_dygamma_xy = dU_dy + dV_dxequiv_strain = np.sqrt(exx ** 2 + eyy ** 2 + 0.5 * gamma_xy ** 2)equiv_strain = gaussian_filter(equiv_strain, sigma=0.6)# 加载前后散斑图fig, axes = plt.subplots(12, figsize=(10.25.6))axes[0].imshow(img_before, cmap="gray", vmin=0, vmax=1)axes[0].set_title("Before loading", fontsize=14)set_specimen_view(axes[0], pad=10)axes[1].imshow(img_after, cmap="gray", vmin=0, vmax=1)axes[1].set_title("After loading", fontsize=14)set_specimen_view(axes[1], pad=10)plt.tight_layout()fig1_path = os.path.join(out_dir, "fig1_speckle_before_after.png")plt.savefig(fig1_path, bbox_inches="tight", facecolor="white")plt.close(fig)# 位移矢量场fig, ax = plt.subplots(figsize=(7.16.5))# 背景变浅,避免遮挡箭头ax.imshow(img_after, cmap="gray", vmin=0, vmax=1)# 先画白色粗箭头作为底ax.quiver(    GX,    GY,    U_smooth,    V_smooth,    color="white",    angles="xy",    scale_units="xy",    scale=0.45,    width=0.009,    headwidth=4.2,    headlength=5.2,    alpha=0.90,    pivot="mid")# 再画彩色箭头q = ax.quiver(    GX,    GY,    U_smooth,    V_smooth,    disp_mag,    cmap="plasma",    angles="xy",    scale_units="xy",    scale=0.45,    width=0.0055,    headwidth=4.2,    headlength=5.2,    alpha=0.98,    pivot="mid")# 控制色带范围,提升整体对比度q.set_clim(    np.percentile(disp_mag, 5),    np.percentile(disp_mag, 98))ax.set_title("DIC displacement vector field", fontsize=14)set_specimen_view(ax, pad=10)cbar = fig.colorbar(q, ax=ax, shrink=0.84, pad=0.02)cbar.set_label("Displacement magnitude / pixel", fontsize=11)plt.tight_layout()fig2_path = os.path.join(out_dir, "fig2_displacement_vector_field.png")plt.savefig(fig2_path, bbox_inches="tight", facecolor="white")plt.close(fig)# 等效应变云图fig, ax = plt.subplots(figsize=(7.16.5))# 轻背景,仅作为辅助ax.imshow(img_after, cmap="gray", vmin=0, vmax=1)vmax = np.percentile(equiv_strain, 98)levels = np.linspace(0, vmax, 22)cf = ax.contourf(    GX,    GY,    equiv_strain,    levels=levels,    cmap="turbo",    alpha=0.90)ax.set_title("Equivalent strain map from displacement field", fontsize=14)set_specimen_view(ax, pad=10)cbar = fig.colorbar(cf, ax=ax, shrink=0.84, pad=0.02)cbar.set_label("Equivalent strain", fontsize=11)plt.tight_layout()fig3_path = os.path.join(out_dir, "fig3_equivalent_strain_map.png")plt.savefig(fig3_path, bbox_inches="tight", facecolor="white")plt.close(fig)

    特别声明:

    以上代码与文案均为网上资料整合而成,仅供广大同行们参考学习,如有侵权请联系删除。

    如有其他需要,欢迎关注我的咸鱼号:pfc小姐姐

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-08-22 01:58:14 HTTP/2.0 GET : https://f.mffb.com.cn/a/505052.html
    2. 运行时间 : 0.277905s [ 吞吐率:3.60req/s ] 内存消耗:4,648.30kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=761ae0357b1081055d04f25109875873
    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.001268s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001715s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002687s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.009645s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001440s ]
    6. SELECT * FROM `set` [ RunTime:0.003012s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001585s ]
    8. SELECT * FROM `article` WHERE `id` = 505052 LIMIT 1 [ RunTime:0.019188s ]
    9. UPDATE `article` SET `lasttime` = 1787335094 WHERE `id` = 505052 [ RunTime:0.027039s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000828s ]
    11. SELECT * FROM `article` WHERE `id` < 505052 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.008263s ]
    12. SELECT * FROM `article` WHERE `id` > 505052 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001157s ]
    13. SELECT * FROM `article` WHERE `id` < 505052 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002242s ]
    14. SELECT * FROM `article` WHERE `id` < 505052 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003911s ]
    15. SELECT * FROM `article` WHERE `id` < 505052 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.029599s ]
    0.281657s