当前位置:首页>python>基于Python的拉盖尔高斯光束模拟程序

基于Python的拉盖尔高斯光束模拟程序

  • 2026-02-08 19:32:31
基于Python的拉盖尔高斯光束模拟程序
最近准备弃MATLAB转战Python了,先用Qt练练手,写一个拉盖尔高斯光束模型程序1.0练练手。后续准备用Python做光学仿真。在这里做一个记录。
设置拉盖尔高斯光束的波长、束腰半径、径向、角向阶数、功率、距离。
查看实部、虚部、振幅、相位
import sysimport osimport numpy as npfrom scipy.special import eval_genlaguerre, factorialimport matplotlib.pyplot as pltfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbarfrom matplotlib.figure import Figurefrom matplotlib.colors import ListedColormapfrom PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import *import csvimport ctypes设置高DPI缩放if hasattr(Qt, 'AA_EnableHighDpiScaling'):    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)if hasattr(Qt, 'AA_UseHighDpiPixmaps'):    QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)class LaguerreGaussianBeam:"""拉盖尔高斯光束计算类"""def __init__(self, grid_size=256, physical_size=5e-3):self.grid_size = grid_sizeself.physical_size = physical_size默认参数self.wavelength = 632.8e-9  波长 (m)self.w0 = 1e-3  束腰半径 (m)self.p = 0  径向模式指数self.l = 1  角向模式指数self.power = 1.0  功率 (W)self.z = 0.0  传播距离 (m)        # 计算网格self.x = np.linspace(-physical_size / 2, physical_size / 2, grid_size)self.y = np.linspace(-physical_size / 2, physical_size / 2, grid_size)self.X, self.Y = np.meshgrid(self.x, self.y)转换为极坐标self.r = np.sqrt(self.X ** self.Y ** 2)self.phi = np.arctan2(self.Y, self.X)计算光束self.compute_beam()def compute_beam(self):"""计算拉盖尔高斯光束"""计算瑞利距离z_r = np.pi * self.w0 ** self.wavelength计算z处的束腰半径w_z = self.w0 * np.sqrt(+ (self.z / z_r) ** 2)计算波前曲率半径R_z = self.z * (+ (z_r / self.z) ** 2if self.z != else float('inf')计算古依相位gouy_phase = (self.p + abs(self.l) + 1) * np.arctan(self.z / z_r)计算拉盖尔高斯模式的振幅归一化因子norm_factor = np.sqrt(* factorial(self.p) / (np.pi * factorial(self.p + abs(self.l))))径向部分rho = np.sqrt(2) * self.r / w_z        radial_part = (rho ** abs(self.l)) * eval_genlaguerre(self.p, abs(self.l), rho ** 2)角向部分angular_part = np.exp(1j self.l * self.phi)高斯包络gaussian_envelope = np.exp(-self.r ** / w_z ** 2)相位项phase_term = np.exp(1j * (* np.pi / self.wavelength) * self.r ** / (* R_z))总相位total_phase = np.exp(-1j * (* np.pi / self.wavelength) * self.z) * np.exp(-1j * gouy_phase)完整的光场self.field = (norm_factor * (/ w_z) * radial_part * angular_part *                      gaussian_envelope * phase_term * total_phase)根据功率归一化self.normalize_power()计算各种表示self.compute_representations()def normalize_power(self):"""根据设定功率归一化光场"""计算当前功率intensity = np.abs(self.field) ** 2current_power = np.sum(intensity) * (self.physical_size / self.grid_size) ** 2if current_power > 0:归一化系数norm_factor = np.sqrt(self.power / current_power)self.field *= norm_factordef compute_representations(self):"""计算各种表示(实部、虚部、振幅、强度、相位)"""self.real_part = np.real(self.field)self.imag_part = np.imag(self.field)self.amplitude = np.abs(self.field)self.intensity = self.amplitude ** 2self.phase = np.angle(self.field)为了显示,将相位包装在[-π, π]之间self.phase_wrapped = np.angle(np.exp(1j self.phase))def set_parameters(self, wavelength, w0, p, l, power, z):"""设置光束参数"""self.wavelength = wavelengthself.w0 = w0self.p = pself.l = lself.power = powerself.z = zself.compute_beam()def get_1d_intensity_profile(self, angle=0):"""获取一维强度分布        Args:            angle: 角度 ()        Returns:            x_vals: x坐标            intensity_vals: 强度值        """将角度转换为弧度theta = np.deg2rad(angle)计算沿着指定方向的线x_line = np.linspace(-self.physical_size / 2self.physical_size / 2self.grid_size)        y_line = x_line * np.tan(theta)插值获取强度值from scipy.interpolate import RegularGridInterpolator        interp_func = RegularGridInterpolator((self.x, self.y), self.intensity)创建插值点points = np.column_stack((x_line, y_line))确保点在范围内mask = (np.abs(x_line) <= self.physical_size / 2) & (np.abs(y_line) <= self.physical_size / 2)        intensity_vals = np.zeros_like(x_line)        intensity_vals[mask] = interp_func(points[mask])return x_line, intensity_valsdef get_1d_phase_profile(self, angle=0):"""获取一维相位分布        Args:            angle: 角度 ()        Returns:            x_vals: x坐标            phase_vals: 相位值        """将角度转换为弧度theta = np.deg2rad(angle)计算沿着指定方向的线x_line = np.linspace(-self.physical_size / 2self.physical_size / 2self.grid_size)        y_line = x_line * np.tan(theta)插值获取相位值from scipy.interpolate import RegularGridInterpolator        interp_func = RegularGridInterpolator((self.x, self.y), self.phase_wrapped)创建插值点points = np.column_stack((x_line, y_line))确保点在范围内mask = (np.abs(x_line) <= self.physical_size / 2) & (np.abs(y_line) <= self.physical_size / 2)        phase_vals = np.zeros_like(x_line)        phase_vals[mask] = interp_func(points[mask])return x_line, phase_valsclass LGBeamApp(QMainWindow):"""主应用程序窗口"""def __init__(self):super().__init__()初始化光束self.beam = LaguerreGaussianBeam()初始化UIself.init_ui()更新显示self.update_display()def init_ui(self):"""初始化用户界面"""self.setWindowTitle("拉盖尔高斯光束生成与分析")self.setGeometry(1001001400900)设置图标self.setWindowIcon(self.create_icon())创建中央部件central_widget = QWidget()self.setCentralWidget(central_widget)主布局main_layout = QHBoxLayout()        central_widget.setLayout(main_layout)左侧控制面板control_panel = self.create_control_panel()        main_layout.addWidget(control_panel, 1)右侧显示区域display_area = self.create_display_area()        main_layout.addWidget(display_area, 3)创建状态栏self.statusBar().showMessage("就绪")设置样式self.setStyleSheet("""            QMainWindow {                background-color: #f0f0f0;            }            QGroupBox {                font-weight: bold;                border: 2px solid #cccccc;                border-radius: 5px;                margin-top: 10px;                padding-top: 10px;            }            QGroupBox::title {                subcontrol-origin: margin;                left: 10px;                padding: 0 5px 0 5px;            }            QPushButton {                background-color: #4a86e8;                color: white;                border: none;                padding: 8px;                border-radius: 4px;                font-weight: bold;            }            QPushButton:hover {                background-color: #3a76d8;            }            QPushButton:pressed {                background-color: #2a66c8;            }            QLabel {                font-weight: bold;            }            QSpinBox, QDoubleSpinBox, QComboBox {                padding: 5px;                border: 1px solid #cccccc;                border-radius: 3px;            }        """)def create_icon(self):"""创建应用程序图标"""创建一个简单的光束图标pixmap = QPixmap(6464)        pixmap.fill(Qt.transparent)        painter = QPainter(pixmap)        painter.setRenderHint(QPainter.Antialiasing)绘制光束图标painter.setPen(QPen(QColor(70130180), 3))        painter.setBrush(QBrush(QColor(100149237200)))        painter.drawEllipse(10104444)绘制光束中心painter.setPen(QPen(QColor(30144255), 2))        painter.drawLine(32163248)绘制螺旋效果for in range(3):            angle = i * 120x = 32 20 * np.cos(np.radians(angle))            y = 32 20 * np.sin(np.radians(angle))            painter.drawEllipse(int(x) - 2int(y) - 244)        painter.end()return QIcon(pixmap)def create_control_panel(self):"""创建控制面板"""panel = QWidget()        layout = QVBoxLayout()        panel.setLayout(layout)光束参数组params_group = QGroupBox("光束参数")        params_layout = QFormLayout()波长self.wavelength_spin = QDoubleSpinBox()self.wavelength_spin.setRange(4001000)self.wavelength_spin.setValue(632.8)self.wavelength_spin.setSingleStep(10)self.wavelength_spin.setDecimals(1)self.wavelength_spin.setSuffix(" nm")self.wavelength_spin.setProperty("value_in_meters"632.8)        params_layout.addRow("波长 (nm):"self.wavelength_spin)束腰半径self.w0_spin = QDoubleSpinBox()self.w0_spin.setRange(0.15)self.w0_spin.setValue(1e-1)self.w0_spin.setSingleStep(0.1e-1)self.w0_spin.setDecimals(3)self.w0_spin.setSuffix(" mm")self.w0_spin.setProperty("value_in_meters"1e-1)        params_layout.addRow("束腰半径 (mm):"self.w0_spin)径向模式指数 pself.p_spin = QSpinBox()self.p_spin.setRange(010)self.p_spin.setValue(0)        params_layout.addRow("径向指数 (p):"self.p_spin)角向模式指数 lself.l_spin = QSpinBox()self.l_spin.setRange(-1010)self.l_spin.setValue(1)        params_layout.addRow("角向指数 (l):"self.l_spin)功率self.power_spin = QDoubleSpinBox()self.power_spin.setRange(0.00110.0)self.power_spin.setValue(1.0)self.power_spin.setSingleStep(0.1)self.power_spin.setDecimals(3)self.power_spin.setSuffix(" W")        params_layout.addRow("功率 (W):"self.power_spin)传播距离self.z_spin = QDoubleSpinBox()self.z_spin.setRange(0.01.0)self.z_spin.setValue(0.0)self.z_spin.setSingleStep(0.01)self.z_spin.setDecimals(3)self.z_spin.setSuffix(" m")        params_layout.addRow("传播距离 (m):"self.z_spin)        params_group.setLayout(params_layout)        layout.addWidget(params_group)显示设置组display_group = QGroupBox("显示设置")        display_layout = QFormLayout()显示类型self.display_type_combo = QComboBox()self.display_type_combo.addItems(["强度""振幅""实部""虚部""相位"])        display_layout.addRow("显示类型:"self.display_type_combo)色彩映射self.colormap_combo = QComboBox()        colormaps = ['viridis''plasma''inferno''magma''cividis','spring''summer''autumn''winter''cool','hot''bone''gray''jet''rainbow']self.colormap_combo.addItems(colormaps)self.colormap_combo.setCurrentText('viridis')        display_layout.addRow("色彩映射:"self.colormap_combo)一维分布角度self.angle_spin = QSpinBox()self.angle_spin.setRange(0360)self.angle_spin.setValue(0)self.angle_spin.setSuffix("°")        display_layout.addRow("一维分布角度:"self.angle_spin)        display_group.setLayout(display_layout)        layout.addWidget(display_group)按钮组button_group = QGroupBox("操作")        button_layout = QVBoxLayout()更新按钮self.update_btn = QPushButton("更新光束")self.update_btn.clicked.connect(self.update_beam)        button_layout.addWidget(self.update_btn)导出按钮self.export_btn = QPushButton("导出数据")self.export_btn.clicked.connect(self.export_data)        button_layout.addWidget(self.export_btn)保存图像按钮self.save_image_btn = QPushButton("保存图像")self.save_image_btn.clicked.connect(self.save_image)        button_layout.addWidget(self.save_image_btn)        button_group.setLayout(button_layout)        layout.addWidget(button_group)信息面板info_group = QGroupBox("光束信息")        info_layout = QVBoxLayout()self.info_text = QTextEdit()self.info_text.setReadOnly(True)self.info_text.setMaximumHeight(150)        info_layout.addWidget(self.info_text)        info_group.setLayout(info_layout)        layout.addWidget(info_group)添加弹性空间layout.addStretch()return paneldef create_display_area(self):"""创建显示区域"""area = QWidget()        layout = QVBoxLayout()        area.setLayout(layout)创建Matplotlib图形self.figure = Figure(figsize=(86), dpi=100)self.canvas = FigureCanvas(self.figure)添加导航工具栏self.toolbar = NavigationToolbar(self.canvas, self)        layout.addWidget(self.toolbar)        layout.addWidget(self.canvas)一维分布标签layout.addWidget(QLabel("一维分布:"))一维分布图形self.figure_1d = Figure(figsize=(83), dpi=100)self.canvas_1d = FigureCanvas(self.figure_1d)        layout.addWidget(self.canvas_1d)return areadef update_beam(self):"""更新光束参数并重新计算"""try:获取参数值wavelength self.wavelength_spin.property("value_in_meters")#if wavelength is None:wavelength = self.wavelength_spin.value() * 1e-9w0 self.w0_spin.property("value_in_meters")#if w0 is None:w0 = self.w0_spin.value() * 1e-3p = self.p_spin.value()            l = self.l_spin.value()            power = self.power_spin.value()            z = self.z_spin.value()更新光束self.beam.set_parameters(wavelength, w0, p, l, power, z)更新显示self.update_display()更新信息self.update_info()self.statusBar().showMessage("光束已更新")except Exception as e:            QMessageBox.critical(self"错误"f"更新光束时出错{str(e)}")def update_display(self):"""更新显示"""清除图形self.figure.clear()self.figure_1d.clear()获取显示类型display_type = self.display_type_combo.currentText()根据显示类型选择数据if display_type == "强度":            data = self.beam.intensity            title = "Intensity"cmap = self.colormap_combo.currentText()elif display_type == "振幅":            data = self.beam.amplitude            title = "Amplitude"cmap = self.colormap_combo.currentText()elif display_type == "实部":            data = self.beam.real_part            title = "Real Part"cmap = self.colormap_combo.currentText()elif display_type == "虚部":            data = self.beam.imag_part            title = "Image Part"cmap = self.colormap_combo.currentText()elif display_type == "相位":            data = self.beam.phase_wrapped            title = "Phase"cmap = self.colormap_combo.currentText()创建2D图像ax1 = self.figure.add_subplot(111)显示图像im = ax1.imshow(data, extent=[-self.beam.physical_size / 1000,self.beam.physical_size / 1000,                                      -self.beam.physical_size / 1000,self.beam.physical_size / 1000],cmap=cmap, origin='lower')        ax1.set_xlabel('x (mm)')        ax1.set_ylabel('y (mm)')        ax1.set_title(f"{title} (p={self.beam.p}, l={self.beam.l})")添加颜色条cbar self.figure.colorbar(im, ax=ax1)添加角度线angle = self.angle_spin.value()if angle < 360:            theta = np.deg2rad(angle)            max_r = self.beam.physical_size / 1000  转换为mmx_end = max_r * np.cos(theta)            y_end = max_r * np.sin(theta)            ax1.plot([0, x_end], [0, y_end], 'r--'linewidth=2alpha=0.7)            ax1.text(x_end / 2, y_end / 2f'{angle}°'color='red',fontsize=12fontweight='bold'backgroundcolor='white')self.figure.tight_layout()创建一维分布图ax2 = self.figure_1d.add_subplot(121)        ax3 = self.figure_1d.add_subplot(122)获取一维分布数据x_intensity, intensity_vals = self.beam.get_1d_intensity_profile(angle)        x_phase, phase_vals = self.beam.get_1d_phase_profile(angle)绘制强度分布ax2.plot(x_intensity * 1000, intensity_vals, 'b-'linewidth=2)        ax2.set_xlabel('Position (mm)')        ax2.set_ylabel('Intensity')        ax2.set_title(f'1D ({angle}°)')        ax2.grid(Truealpha=0.3)绘制相位分布ax3.plot(x_phase * 1000, phase_vals, 'r-'linewidth=2)        ax3.set_xlabel('Position (mm)')        ax3.set_ylabel('Phase (rad)')        ax3.set_title(f'1D Phase ({angle}°)')        ax3.grid(Truealpha=0.3)self.figure_1d.tight_layout()刷新画布self.canvas.draw()self.canvas_1d.draw()def update_info(self):"""更新光束信息"""info_text = f"""光束参数:波长{self.beam.wavelength * 1e9:.1f} nm束腰半径{self.beam.w0 * 1000:.3f} mm模式指数: p={self.beam.p}, l={self.beam.l}功率{self.beam.power:.3f} W传播距离{self.beam.z:.3f} m计算参数:网格大小{self.beam.grid_size}×{self.beam.grid_size}物理尺寸{self.beam.physical_size * 1000:.1f} mm瑞利距离{np.pi * self.beam.w0 ** self.beam.wavelength:.3f} m        """self.info_text.setText(info_text)def export_data(self):"""导出数据"""try:选择保存位置options = QFileDialog.Options()            file_path, _ = QFileDialog.getSaveFileName(self"导出数据""""CSV文件 (*.csv);;所有文件 (*)"options=options            )if file_path:获取显示类型display_type = self.display_type_combo.currentText()根据显示类型选择数据if display_type == "强度":                    data = self.beam.intensity                    data_name = "intensity"elif display_type == "振幅":                    data = self.beam.amplitude                    data_name = "amplitude"elif display_type == "实部":                    data = self.beam.real_part                    data_name = "real_part"elif display_type == "虚部":                    data = self.beam.imag_part                    data_name = "imaginary_part"elif display_type == "相位":                    data = self.beam.phase_wrapped                    data_name = "phase"保存数据with open(file_path, 'w'newline=''as csvfile:                    writer = csv.writer(csvfile)写入标题行writer.writerow([f"拉盖尔高斯光束数据 - {data_name}"])                    writer.writerow([f"波长{self.beam.wavelength * 1e9:.1f} nm"])                    writer.writerow([f"束腰半径{self.beam.w0 * 1000:.3f} mm"])                    writer.writerow([f"模式指数: p={self.beam.p}, l={self.beam.l}"])                    writer.writerow([f"功率{self.beam.power:.3f} W"])                    writer.writerow([])写入数据writer.writerow(["X坐标(mm)""Y坐标(mm)", data_name])将数据展平并写入x_coords = self.beam.X.flatten() * 1000  转换为mmy_coords = self.beam.Y.flatten() * 1000  转换为mmdata_flat = data.flatten()for x, y, val in zip(x_coords, y_coords, data_flat):                        writer.writerow([f"{x:.6f}"f"{y:.6f}"f"{val:.6e}"])self.statusBar().showMessage(f"数据已导出到{file_path}")                QMessageBox.information(self"成功"f"数据已成功导出到:\n{file_path}")except Exception as e:            QMessageBox.critical(self"错误"f"导出数据时出错{str(e)}")def save_image(self):"""保存图像"""try:选择保存位置options = QFileDialog.Options()            file_path, _ = QFileDialog.getSaveFileName(self"保存图像""""PNG文件 (*.png);;PDF文件 (*.pdf);;所有文件 (*)"options=options            )if file_path:获取文件扩展名ext = os.path.splitext(file_path)[1].lower()if ext in ['.png''.pdf''.jpg''.jpeg''.tif''.tiff']:保存主图像self.figure.savefig(file_path, dpi=300bbox_inches='tight')保存一维分布图base_name, ext_name = os.path.splitext(file_path)                    file_1d = f"{base_name}_1d{ext_name}"self.figure_1d.savefig(file_1d, dpi=300bbox_inches='tight')self.statusBar().showMessage(f"图像已保存到{file_path}")                    QMessageBox.information(self"成功"f"图像已保存到:\n{file_path}\n一维分布图:\n{file_1d}")else:                    QMessageBox.warning(self"警告",f"不支持的文件格式{ext}\n请使用 .png, .pdf, .jpg, .jpeg, .tif  .tiff")except Exception as e:            QMessageBox.critical(self"错误"f"保存图像时出错{str(e)}")def main():"""主函数"""app = QApplication(sys.argv)设置应用程序IDWindows任务栏图标)if sys.platform == "win32":        app_id = 'lg.beam.app.1.0'ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(app_id)创建并显示主窗口window = LGBeamApp()    window.show()    sys.exit(app.exec_())if __name__ == "__main__":    main()

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 21:23:46 HTTP/2.0 GET : https://f.mffb.com.cn/a/474371.html
  2. 运行时间 : 0.130358s [ 吞吐率:7.67req/s ] 内存消耗:4,652.96kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ad82a539a24ec303696a5122b81acc89
  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.001065s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001517s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000850s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000724s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001400s ]
  6. SELECT * FROM `set` [ RunTime:0.003770s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001668s ]
  8. SELECT * FROM `article` WHERE `id` = 474371 LIMIT 1 [ RunTime:0.001876s ]
  9. UPDATE `article` SET `lasttime` = 1770557027 WHERE `id` = 474371 [ RunTime:0.002975s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000619s ]
  11. SELECT * FROM `article` WHERE `id` < 474371 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.010564s ]
  12. SELECT * FROM `article` WHERE `id` > 474371 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007463s ]
  13. SELECT * FROM `article` WHERE `id` < 474371 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001713s ]
  14. SELECT * FROM `article` WHERE `id` < 474371 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001538s ]
  15. SELECT * FROM `article` WHERE `id` < 474371 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004267s ]
0.134183s