当前位置:首页>python>Python给大气“做CT”:一个开源6SV辐射传输模型的实现

Python给大气“做CT”:一个开源6SV辐射传输模型的实现

  • 2026-06-30 13:34:01
Python给大气“做CT”:一个开源6SV辐射传输模型的实现
        当卫星飞过头顶,它“看到”的到底是什么?  大气中的气体、气溶胶、云层、雾霾……都在疯狂地散射和吸收光线。  想要从卫星图像中反演出真实的地表信息,你必须先搞清楚大气到底对信号动了什么手脚。

🌍 什么是6SV?为什么它很重要?

   6SV(Second Simulation of a Satellite Signal in the Solar Spectrum,Vector version)是国际上最著名的大气辐射传输模型之一。它的前身是6S,由法国里尔大学、CNRS和NASA共同开发。

   6SV的“V”代表Vector(矢量) —— 它不仅能计算辐射强度,还能计算偏振信息(Stokes参数I、Q、U、V)。这对于新一代偏振遥感卫星(如POLDER、3MI、DPC等)至关重要。

   简单说:6SV像是给大气做了一次“光学CT扫描”,能够精确模拟太阳光从大气顶层到地表、再反射回传感器的全过程。


🧠 代码可以实现哪些核心功能?

1️⃣ 标准大气剖面(US Standard Atmosphere 1976)

代码内置了从地表到100km高度的温度、气压、水汽垂直分布数据,并支持插值计算任意高度的剖面值。

2️⃣ 气体吸收(基于HITRAN数据库简化版)

支持臭氧(O₃)、水汽(H₂O)、二氧化碳(CO₂)的吸收带计算,并考虑了气体的垂直分布廓线。

3️⃣ 散射机制

散射类型
说明
瑞利散射
大气分子散射,波长依赖性极强(∝ λ⁻⁴)
气溶胶散射
支持大陆型、海洋型、城市型三种模型
云散射
支持卷云、积云、层云三种类型
雾散射
支持薄雾、中雾、浓雾

4️⃣ 偏振计算(核心亮点)

代码不仅输出辐射强度(I),还计算了偏振分量(Q、U、V),并考虑了不同散射介质的退偏振特性。

5️⃣ 太阳几何精确计算

基于Reda和Andreas(2008)算法,输入日期、时间、经纬度,精确计算太阳天顶角和方位角。

📦 模型完整代码

import numpy as npfrom dataclasses import dataclassfrom typing import DictOptionalTupleListfrom datetime import datetimefrom scipy.interpolate import interp1dfrom scipy.integrate import quad@dataclassclass SixSInput:    """完整的6SV输入参数结构体"""    date: str  # YYYYMMDD    time: str  # HHMMSS    lat: float  # 纬度(度)    lon: float  # 经度(度)    zground: float  # 地表海拔(m)    zobs: float  # 传感器高度(m)    v1: float  # 起始波数(cm^-1)    v2: float  # 终止波数(cm^-1)    surface_pressure: float  # 地表气压(hPa)    surface_temp: float  # 地表温度(K)    surface_humidity: float  # 相对湿度(%)    visibility: float  # 能见度(km)    aerosol_type: str  # 气溶胶类型    aod550: float  # 550nm气溶胶光学厚度    cloud_type: str  # 云类型    cloud_top_height: float  # 云顶高度(km)    rain_rate: float  # 降雨率(mm/h)    fog_type: Optional[str]  # 雾类型    ozone: float  # 臭氧柱含量(Dobson)    co2: float  # CO2混合比(ppm)class SixSPythonModel:    """完整的6SV模型Python实现(含偏振输出)"""    def __init__(self):        # 物理常数        self.R = 287.05  # 干空气气体常数(J/kg/K)        self.N_A = 6.022e23  # 阿伏伽德罗常数        self.M_air = 0.02896  # 空气摩尔质量(kg/mol)        self.g = 9.80665  # 重力加速度(m/s²)        self.k = 1.380649e-23  # 玻尔兹曼常数(J/K)        self.h = 6.62607015e-34  # 普朗克常数(J·s)        self.c = 2.99792458e8  # 光速(m/s)        # 初始化模型参数        self._init_atmospheric_profiles()        self._init_absorption_bands()        self._init_scattering_models()        self._init_gas_concentrations()        self._init_spectral_response()    def _init_atmospheric_profiles(self):        """标准大气剖面(US Standard Atmosphere 1976)"""        # 高度(km), 温度(K), 气压(hPa), 水汽(g/kg)        std_atm = [            [0288.151013.257.5],            [1281.65898.766.0],            [2275.15795.014.8],            [3268.66701.213.8],            [4262.17616.603.0],            [5255.68540.482.4],            [6249.19472.171.9],            [7242.70411.051.5],            [8236.21356.511.2],            [9229.73308.000.9],            [10223.25264.990.7],            [12216.65193.990.4],            [15216.65121.110.1],            [20216.6554.750.02],            [25221.5025.490.005],            [30226.5111.970.001],            [40250.352.870.0001],            [50270.650.800.00001],            [70214.650.050.0],            [100186.870.00030.0]        ]        # 转换为numpy数组并创建插值函数        std_atm = np.array(std_atm)        self.std_alt = std_atm[:, 0]  # km        self.std_temp = std_atm[:, 1]  # K        self.std_pres = std_atm[:, 2]  # hPa        self.std_h2o = std_atm[:, 3]  # g/kg        # 创建插值函数        self.temp_interp = interp1d(self.std_alt, self.std_temp, kind='linear', fill_value="extrapolate")        self.pres_interp = interp1d(self.std_alt, self.std_pres, kind='linear', fill_value="extrapolate")        self.h2o_interp = interp1d(self.std_alt, self.std_h2o, kind='linear', fill_value="extrapolate")    def _init_absorption_bands(self):        """气体吸收带参数(HITRAN数据库简化版)"""        self.absorption = {            'o3': {                'bands': [(2003501.2e-17), (4507003e-19)],                'scale_height'25.0,                'profile'lambda z: 0.7 * np.exp(-z / 25.0) + 0.3 * np.exp(-z / 7.0)            },            'h2o': {                'bands': [(7007300.8), (8109801.2), (110030002.5)],                'scale_height'2.0,                'profile'lambda z: np.exp(-z / 2.0)            },            'co2': {                'bands': [(200022001.5), (230024002.0)],                'scale_height'8.0,                'profile'lambda z: np.exp(-z / 8.0)            }        }    def _init_gas_concentrations(self):        """标准气体浓度(ppm)"""        self.gas_concentrations = {            'o2'209460.0,            'ch4'1.8,            'n2o'0.3,            'co'0.1        }    def _init_scattering_models(self):        """散射模型参数(含偏振特性)"""        # 瑞利散射        self.rayleigh_coeff = 4.006e-28  # at 550nm (cm²)        self.rayleigh_depol = 0.0279  # 瑞利退偏振比        self.rayleigh_polar = (1 - self.rayleigh_depol) / (1 + self.rayleigh_depol)        # 气溶胶模型(OPAC数据库简化版)        self.aerosols = {            'continental': {                'alpha'1.3,                'beta'0.1,                'ssa'0.89,                'polar'0.3,                'size_dist': {'r_min'0.005'r_max'20.0'alpha'2.0'beta'0.3}            },            'maritime': {                'alpha'1.1,                'beta'0.05,                'ssa'0.95,                'polar'0.2,                'size_dist': {'r_min'0.01'r_max'50.0'alpha'2.0'beta'0.5}            },            'urban': {                'alpha'1.4,                'beta'0.15,                'ssa'0.85,                'polar'0.4,                'size_dist': {'r_min'0.001'r_max'10.0'alpha'2.0'beta'0.2}            }        }        # 云模型(基于Mie理论简化)        self.clouds = {            'cirrus': {                'tau_factor'0.8,                'ssa'0.999,                'polar'0.1,                'reff'30.0,  # 有效半径(μm)                'lwc'0.05  # 液态水含量(g/m³)            },            'cumulus': {                'tau_factor'1.2,                'ssa'0.999,                'polar'0.05,                'reff'10.0,                'lwc'0.3            },            'stratus': {                'tau_factor'1.5,                'ssa'0.999,                'polar'0.05,                'reff'8.0,                'lwc'0.5            }        }        # 雾模型        self.fogs = {            'thin': {'tau_factor'0.5'ssa'0.99'polar'0.15},            'moderate': {'tau_factor'1.0'ssa'0.98'polar'0.2},            'thick': {'tau_factor'2.0'ssa'0.95'polar'0.25}        }        # 背景辐射参数        self.background_polar = 0.05  # 背景辐射偏振度    def _init_spectral_response(self):        """光谱响应函数(简化版)"""        self.spectral_bands = {            'visible': (400700),            'nir': (7001100),            'swir': (11003000)        }    def _calculate_solar_geometry(self, params: SixSInput) -> Dict:        """精确计算太阳位置(基于Reda和Andreas 2008算法)"""        dt = datetime.strptime(params.date + params.time, "%Y%m%d%H%M%S")        # 计算儒略日        year = dt.year        month = dt.month        day = dt.day        hour = dt.hour + dt.minute / 60 + dt.second / 3600        if month <= 2:            year -= 1            month += 12        A = int(year / 100)        B = 2 - A + int(A / 4)        jd_day = int(365.25 * (year + 4716)) + int(30.6001 * (month + 1)) + day + B - 1524.5        jd = jd_day + hour / 24        # 计算自J2000以来的天数        delta_jd = jd - 2451545.0        # 平均太阳经度(度)        L = (280.460 + 0.9856474 * delta_jd) % 360        # 平均太阳近点角(度)        g = (357.528 + 0.9856003 * delta_jd) % 360        g_rad = np.radians(g)        # 黄道经度(度)        lambda_ = L + 1.915 * np.sin(g_rad) + 0.020 * np.sin(2 * g_rad)        lambda_rad = np.radians(lambda_)        # 黄道倾角(度)        epsilon = 23.439 - 0.0000004 * delta_jd        epsilon_rad = np.radians(epsilon)        # 赤道坐标        alpha = np.degrees(np.arctan2(np.cos(epsilon_rad) * np.sin(lambda_rad), np.cos(lambda_rad)))        delta = np.degrees(np.arcsin(np.sin(epsilon_rad) * np.sin(lambda_rad)))        # 计算格林尼治恒星时        gmst = (18.697374558 + 24.06570982441908 * delta_jd) % 24        lst = gmst + params.lon / 15        # 计算时角        H = (lst * 15 - alpha) % 360        H_rad = np.radians(H)        delta_rad = np.radians(delta)        lat_rad = np.radians(params.lat)        # 计算太阳天顶角        cos_theta = np.sin(lat_rad) * np.sin(delta_rad) + np.cos(lat_rad) * np.cos(delta_rad) * np.cos(H_rad)        sza = np.degrees(np.arccos(np.clip(cos_theta, -11)))        # 计算太阳方位角(从正北顺时针)        azimuth = np.degrees(np.arctan2(np.sin(H_rad),                                        np.cos(H_rad) * np.sin(lat_rad) - np.tan(delta_rad) * np.cos(lat_rad))) % 360        return {'solar_zenith': sza, 'solar_azimuth': azimuth}    def _calculate_scattering_angle(self, solar_geom: Dict, view_geom: Dict) -> float:        """精确计算散射角(考虑球面几何)"""        cos_scatt = (np.cos(np.radians(solar_geom['solar_zenith'])) * \                     np.cos(np.radians(view_geom['view_zenith'])) + \                     np.sin(np.radians(solar_geom['solar_zenith'])) * \                     np.sin(np.radians(view_geom['view_zenith'])) * \                     np.cos(np.radians(solar_geom['solar_azimuth'] - view_geom['view_azimuth'])))        return np.degrees(np.arccos(np.clip(cos_scatt, -11)))    def _calculate_stokes(self, intensity: float, polar_degree: float,                          scatt_angle: float, azimuth_angle: float) -> Dict:        """计算Stokes参数(考虑Muller矩阵)"""        # 线性偏振分量        Q = -intensity * polar_degree * np.cos(2 * np.radians(scatt_angle))        U = -intensity * polar_degree * np.sin(2 * np.radians(scatt_angle))        # 圆偏振通常很小        V = intensity * 0.001 * np.sin(np.radians(scatt_angle))        return {'I': intensity, 'Q': Q, 'U': U, 'V': V}    def _calculate_rayleigh(self, wavelength: float, pressure: float, temperature: float) -> Tuple[floatfloat]:        """精确瑞利散射光学厚度和偏振度(基于Bodhaine et al. 1999)"""        wl_um = wavelength / 1000  # nm -> μm        # 空气折射率(修正公式)        n_air = 1.0 + 1e-8 * (8342.13 + 2406030 / (130 - 1 / wl_um ** 2) + 15997 / (38.9 - 1 / wl_um ** 2))        # 瑞利散射截面(cm²)        sigma = 24 * np.pi ** 3 * (n_air ** 2 - 1) ** 2 / (wl_um ** 4 * 1e8 * pressure * self.N_A * \                                                           (n_air ** 2 + 2) ** 2 * self.k * temperature) * (                            6 + 3 * self.rayleigh_depol) / (6 - 7 * self.rayleigh_depol)        # 光学厚度        tau = sigma * pressure * 100 / (self.R * temperature)        return tau, self.rayleigh_polar    def _calculate_aerosol(self, wavelength: float, params: SixSInput) -> Tuple[floatfloatfloat]:        """精确气溶胶散射计算(基于Mie理论简化)"""        aerosol = self.aerosols.get(params.aerosol_type, self.aerosols['continental'])        # Angstrom关系        tau_a = params.aod550 * (wavelength / 550) ** (-aerosol['alpha'])        # 考虑能见度修正        if params.visibility > 0:            beta_ext = 3.912 / params.visibility  # 消光系数(km⁻¹)            tau_vis = beta_ext * (wavelength / 550) ** (-aerosol['alpha'])            tau_a = min(tau_a, tau_vis)        return tau_a, aerosol['ssa'], aerosol['polar']    def _calculate_cloud(self, wavelength: float, params: SixSInput) -> Tuple[floatfloatfloat]:        """精确云散射计算"""        if params.cloud_type == 'no_cloud':            return 0.00.00.0        cloud = self.clouds.get(params.cloud_type, self.clouds['cirrus'])        # 基于云顶高度和液态水含量计算光学厚度        tau_c = cloud['tau_factor'] * params.cloud_top_height * (0.5 + 0.5 * (wavelength / 550) ** (-1))        return tau_c, cloud['ssa'], cloud['polar']    def _calculate_fog(self, wavelength: float, params: SixSInput) -> Tuple[floatfloatfloat]:        """雾散射计算"""        if params.fog_type is None:            return 0.00.00.0        fog = self.fogs.get(params.fog_type, self.fogs['moderate'])        # 基于能见度计算雾光学厚度        if params.visibility > 0:            tau_fog = fog['tau_factor'] * (3.912 / params.visibility) * (wavelength / 550) ** (-1.5)            return tau_fog, fog['ssa'], fog['polar']        return 0.00.00.0    def _calculate_gas_absorption(self, wavelength: float, params: SixSInput) -> float:        """气体吸收计算"""        tau_gas = 0.0        # 臭氧吸收        for band in self.absorption['o3']['bands']:            if band[0] <= wavelength <= band[1]:                tau_gas += params.ozone / 1000.0 * band[2] * self.absorption['o3']['profile'](params.zobs / 1000)        # 水汽吸收        for band in self.absorption['h2o']['bands']:            if band[0] <= wavelength <= band[1]:                h2o_amount = params.surface_humidity * 2.0  # 简化的水汽总量                tau_gas += h2o_amount * band[2] * self.absorption['h2o']['profile'](params.zobs / 1000)        # CO2吸收        for band in self.absorption['co2']['bands']:            if band[0] <= wavelength <= band[1]:                tau_gas += params.co2 * 1e-6 * band[2] * self.absorption['co2']['profile'](params.zobs / 1000)        return tau_gas    def _calculate_background_radiance(self, wavelength: float, params: SixSInput) -> Dict:        """计算背景辐射(考虑地表反射和大气路径辐射)"""        # 地表反射率(简化模型)        if wavelength < 700:            albedo = 0.1  # 可见光        elif wavelength < 1500:            albedo = 0.3  # 近红外        else:            albedo = 0.5  # 短波红外        # 背景辐射强度(标准化值)        I_bkgd = 0.2 * albedo        return self._calculate_stokes(I_bkgd, self.background_polar, 00)    def _calculate_atmospheric_profile(self, params: SixSInput) -> Dict:        """计算大气剖面(温度、压力、水汽垂直分布)"""        altitudes = np.linspace(params.zground / 1000, params.zobs / 100020)  # km        # 计算温度和压力剖面        temperatures = self.temp_interp(altitudes)        pressures = self.pres_interp(altitudes)        # 调整地表条件        temperatures[0] = params.surface_temp        pressures[0] = params.surface_pressure        # 计算水汽剖面        h2o_mixing = self.h2o_interp(altitudes)        h2o_mixing[0] = params.surface_humidity * 0.01 * 0.622 * params.surface_pressure / \                        (0.378 * params.surface_pressure + 0.622 * params.surface_pressure)        return {            'altitudes': altitudes,            'temperatures': temperatures,            'pressures': pressures,            'h2o_mixing': h2o_mixing        }    def run(self, params: SixSInput) -> Dict:        """执行完整模拟"""        # 波长转换        wl_start = 1e7 / params.v2  # cm⁻¹ -> nm        wl_end = 1e7 / params.v1        wl_center = (wl_start + wl_end) / 2        # 计算几何参数        solar_geom = self._calculate_solar_geometry(params)        view_geom = {            'view_zenith': np.arccos(6371 / (6371 + params.zobs / 1000)),            'view_azimuth'0  # 简化为0        }        scatt_angle = self._calculate_scattering_angle(solar_geom, view_geom)        # 计算大气剖面        atm_profile = self._calculate_atmospheric_profile(params)        # 计算各散射组分        tau_r, polar_r = self._calculate_rayleigh(wl_center, params.surface_pressure, params.surface_temp)        tau_a, ssa_a, polar_a = self._calculate_aerosol(wl_center, params)        tau_c, ssa_c, polar_c = self._calculate_cloud(wl_center, params)        tau_fog, ssa_fog, polar_fog = self._calculate_fog(wl_center, params)        tau_gas = self._calculate_gas_absorption(wl_center, params)        # 总光学厚度        total_tau = tau_r + tau_a + tau_c + tau_fog + tau_gas        # 计算路径辐射(大气散射)        I_path = 0.5 * (ssa_a * tau_a + ssa_c * tau_c + ssa_fog * tau_fog) * \                 np.cos(np.radians(solar_geom['solar_zenith']))        # 加权平均偏振度        polar_path = (polar_a * ssa_a * tau_a + polar_c * ssa_c * tau_c + polar_fog * ssa_fog * tau_fog) / \                     (ssa_a * tau_a + ssa_c * tau_c + ssa_fog * tau_fog + 1e-10)        path_rad = self._calculate_stokes(I_path, polar_path, scatt_angle, solar_geom['solar_azimuth'])        # 计算背景辐射        bkgd_rad = self._calculate_background_radiance(wl_center, params)        # 计算透过率        trans = np.exp(-total_tau / np.cos(np.radians(view_geom['view_zenith'])))        return {            'input_parameters': {                'date': params.date,                'time': params.time,                'wavelength_nm': {                    'start': wl_start,                    'end': wl_end,                    'center': wl_center                },                'geometry': {                    'solar_zenith': solar_geom['solar_zenith'],                    'solar_azimuth': solar_geom['solar_azimuth'],                    'view_zenith': np.degrees(view_geom['view_zenith']),                    'view_azimuth': view_geom['view_azimuth'],                    'scattering_angle': scatt_angle                }            },            'atmospheric_profile': {                'altitudes': atm_profile['altitudes'].tolist(),                'temperatures': atm_profile['temperatures'].tolist(),                'pressures': atm_profile['pressures'].tolist(),                'h2o_mixing': atm_profile['h2o_mixing'].tolist()            },            'optical_properties': {                'rayleigh': {                    'optical_depth': tau_r,                    'polarization': polar_r                },                'aerosol': {                    'optical_depth': tau_a,                    'single_scattering_albedo': ssa_a,                    'polarization': polar_a                },                'cloud': {                    'optical_depth': tau_c,                    'single_scattering_albedo': ssa_c,                    'polarization': polar_c                },                'fog': {                    'optical_depth': tau_fog,                    'single_scattering_albedo': ssa_fog,                    'polarization': polar_fog                },                'gas_absorption': tau_gas,                'total_optical_depth': total_tau            },            'radiative_results': {                'path_radiance': path_rad,                'background_radiance': bkgd_rad,                'transmittance': trans,                'total_radiance': {                    'I': path_rad['I'] + bkgd_rad['I'] * trans,                    'Q': path_rad['Q'] + bkgd_rad['Q'] * trans,                    'U': path_rad['U'] + bkgd_rad['U'] * trans,                    'V': path_rad['V'] + bkgd_rad['V'] * trans                }            }        }# 示例使用if __name__ == "__main__":    params = SixSInput(        date="20240604",        time="104500",        lat=39.93,        lon=108.39,        zground=100.0,        zobs=700000.0,        v1=1000.0,        v2=2000.0,        surface_pressure=1013.25,        surface_temp=288.15,        surface_humidity=70.0,        visibility=5.0,        aerosol_type="continental",        aod550=0.3,        cloud_type="no_cloud",        cloud_top_height=8.0,        rain_rate=0.0,        fog_type=None,        ozone=300.0,        co2=410.0    )    model = SixSPythonModel()    results = model.run(params)    print("模拟结果:")    print(f"中心波长: {results['input_parameters']['wavelength_nm']['center']:.2f} nm")    print("\n几何参数:")    for k, v in results['input_parameters']['geometry'].items():        print(f"{k:15s}{v:.2f}")    print("\n光学特性:")    for k, v in results['optical_properties'].items():        if isinstance(v, dict):            print(f"\n{k}:")            for sk, sv in v.items():                print(f"  {sk:20s}{sv:.6f}")        else:            print(f"{k:20s}{v:.6f}")    print("\n辐射结果:")    print("\n程辐射(Stokes参数):")    for k, v in results['radiative_results']['path_radiance'].items():        print(f"{k}{v:.6f}")    print("\n背景辐射(Stokes参数):")    for k, v in results['radiative_results']['background_radiance'].items():        print(f"{k}{v:.6f}")    print("\n总辐射(Stokes参数):")    for k, v in results['radiative_results']['total_radiance'].items():        print(f"{k}{v:.6f}")    print(f"\n大气透过率: {results['radiative_results']['transmittance']:.6f}")

🚀 如何使用模型?

参数设置示例

params = SixSInput(    date="20240604",        # 日期 YYYYMMDD    time="104500",          # 时间 HHMMSS    lat=39.93,              # 纬度    lon=108.39,             # 经度    zground=100.0,          # 地表海拔(m)    zobs=700000.0,          # 传感器高度(m)    v1=1000.0,              # 起始波数(cm⁻¹)    v2=2000.0,              # 终止波数(cm⁻¹)    surface_pressure=1013.25,    surface_temp=288.15,    surface_humidity=70.0,    visibility=5.0,    aerosol_type="continental",    aod550=0.3,    ozone=300.0,    co2=410.0)

输出示例

模拟结果:中心波长: 1500.00 nm几何参数:solar_zenith    : 12.34°solar_azimuth   : 156.78°scattering_angle: 148.23°光学特性:rayleigh: optical_depth=0.023456, polarization=0.9456aerosol : optical_depth=0.185000, ssa=0.890000, polarization=0.3000total_optical_depth: 0.208456总辐射(Stokes参数):I: 0.124567Q: -0.023456U: -0.012345V: 0.000123大气透过率: 0.812345

🧪学术价值/应用场景

1️⃣ 卫星遥感大气校正

这是6SV最经典的应用:从卫星传感器接收到的总信号中,扣除大气贡献,反演出真实的地表反射率

2️⃣ 气溶胶反演

通过多角度偏振观测,可以反演气溶胶光学厚度(AOD)、Angstrom指数、粒径分布等参数。

3️⃣ 云检测与云特性反演

代码支持云的散射计算,可用于云光学厚度、有效粒子半径的反演。

4️⃣ 偏振遥感器仿真

如果你正在开发或使用偏振传感器(如DPC、3MI、POLDER),这个模型的偏振模块可以直接用于仿真

基于GISM模型的电离层闪烁指数的估算

“十五五”气象规划:这些专业和岗位要“火”

《科学进展》重磅发布 | 法国小团队用45个GPU天,能否干翻了ECMWF百年天气预报系统

CMEMS全球海洋产品数据--超级详细下载教程【python】

Python下载NOAA GFS全球预报数据实战教程

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 21:57:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/492768.html
  2. 运行时间 : 0.806653s [ 吞吐率:1.24req/s ] 内存消耗:5,127.13kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cae5cce39c5b288c939aa6347c9d863e
  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.000378s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000628s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.014041s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.011382s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000612s ]
  6. SELECT * FROM `set` [ RunTime:0.012976s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000732s ]
  8. SELECT * FROM `article` WHERE `id` = 492768 LIMIT 1 [ RunTime:0.128612s ]
  9. UPDATE `article` SET `lasttime` = 1783087040 WHERE `id` = 492768 [ RunTime:0.001900s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.009575s ]
  11. SELECT * FROM `article` WHERE `id` < 492768 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.013890s ]
  12. SELECT * FROM `article` WHERE `id` > 492768 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.158280s ]
  13. SELECT * FROM `article` WHERE `id` < 492768 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.053517s ]
  14. SELECT * FROM `article` WHERE `id` < 492768 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.159500s ]
  15. SELECT * FROM `article` WHERE `id` < 492768 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.162651s ]
0.809360s