当前位置:首页>鸿蒙APP>SHA 库 鸿蒙PC 适配详解

SHA 库 鸿蒙PC 适配详解

  • 2026-04-15 19:22:01
SHA 库 鸿蒙PC 适配详解

如果这篇文章对你有帮助,麻烦大家点赞 + 收藏 + 转发三连支持~ 你们的每一份认可,都是我持续输出技术干货的最大动力!后续还会带来更多实操教程,技术解读。记得关注不迷路哦~

也欢迎添加我的联系方式,咱们交个朋友!未来我也会持续分享各类前沿技术干货。

SHA 库 鸿蒙PC 适配详解

核心文件介绍

SHA 库的 鸿蒙PC 适配包含以下核心文件,每个文件都有特定的作用和重要性:

1. HPKBUILD - 构建配置文件 ⭐⭐⭐⭐⭐

重要性: ⭐⭐⭐⭐⭐ (最核心的文件)

作用: 定义包的元数据、构建过程和打包逻辑

关键配置:

# 包的基本信息pkgname=sha                                    # 包名pkgver=3ee0d88fc4f629b2e084f1b4cbf22cd3597542fb  # 版本号(commit hash)archs=("armeabi-v7a""arm64-v8a")              # 支持的架构# 源码配置source="https://github.com/BrianGladman/sha.git"autounpack=false# 不自动解压(使用 git clone)downloadpackage=false# 不下载压缩包# 构建函数prepare()   # 准备阶段:下载源码、应用补丁build()     # 构建阶段:编译代码archive()   # 打包阶段:生成 HNP 包package()   # 安装阶段:安装到目标目录

核心功能:

  1. 源码获取: 通过 git clone 获取指定版本的源码
  2. 补丁应用: 自动应用 OpenHarmony 适配补丁
  3. 多架构构建: 支持 armeabi-v7a 和 arm64-v8a 两种架构
  4. 产物打包: 生成 HNP 包和 tar.gz 压缩包

关键改进:

# 添加环境配置加载source envset.sh# archive 函数中添加环境变量设置if [ "$ARCH" == "armeabi-v7a" ]; then    setarm32ENV           # 设置 ARM32 环境elif [ "$ARCH" == "arm64-v8a" ]; then    setarm64ENV           # 设置 ARM64 环境fi${HNP_TOOL} pack -i ...   # 打包 HNP

2. HPKCHECK - 测试配置文件 ⭐⭐⭐⭐

重要性: ⭐⭐⭐⭐ (质量保证)

作用: 定义测试逻辑和测试执行方式

关键配置:

source HPKBUILD > /dev/null 2>&1  # 加载 HPKBUILD 配置# 测试函数openharmonycheck() {cd$builddir/$ARCH-build    ctest > ${logfile} 2>&1       # 执行 CMake 测试    res=$?cd$OLDPWDreturn$res}

测试内容:

  • SHA-1 算法正确性测试
  • SHA-256 算法正确性测试
  • SHA-512 算法正确性测试
  • HMAC 功能测试
  • 密钥派生功能测试

3. hnp.json - HNP 包配置文件 ⭐⭐⭐⭐⭐

重要性: ⭐⭐⭐⭐⭐ (部署关键)

作用: 定义 HNP 包的元数据和安装配置

配置内容:

{"type""hnp-config",      // 配置类型"name""sha",              // 包名"version""1.1.0",         // HNP 版本号"install": {}               // 安装配置(可选)}

重要性说明:

  • HNP (Harmony Native Package) 是 OpenHarmony 的原生包格式
  • 这个文件是打包工具识别包的必要条件
  • 版本号用于包管理和版本控制
  • 可以包含安装后的配置信息

4. README_zh.md - 中文文档 ⭐⭐⭐⭐

重要性: ⭐⭐⭐⭐ (用户指南)

作用: 提供完整的使用文档和 API 说明

文档结构:

# SHA 加密库说明文档## 功能简介## 支持的算法## API 接口## 使用示例## 构建说明## 测试验证## 常见问题## 安全建议

文档亮点:

  • ✅ 完整的 API 接口文档
  • ✅ 3 个实用的代码示例
  • ✅ 详细的构建步骤
  • ✅ 测试验证方法
  • ✅ 常见问题解答
  • ✅ 安全使用建议

5. README.OpenSource - 开源声明 ⭐⭐⭐

重要性: ⭐⭐⭐ (合规性)

作用: 声明开源软件的许可证和版权信息

格式: JSON 数组

[    {"Name""sha","License""","License File""","Version Number""3ee0d88fc4f629b2e084f1b4cbf22cd3597542fb","Owner""jianguo@nutpi.net","Upstream URL""https://github.com/BrianGladman/sha","Description""sha is an algorithm that calculates a fixed length string..."    }]

用途:

  • 开源合规性检查
  • 许可证管理
  • 依赖关系追踪
  • 审计和合规报告

SHA 适配架构

整体架构图

┌─────────────────────────────────────────────────────────────┐│                    OpenHarmony 适配层                        │├─────────────────────────────────────────────────────────────┤│                                                               ││  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      ││  │  HPKBUILD    │  │  HPKCHECK    │  │  hnp.json    │      ││  │  构建配置    │  │  测试配置    │  │  包配置      │      ││  └──────────────┘  └──────────────┘  └──────────────┘      ││           │                  │                  │            ││           └──────────────────┼──────────────────┘            ││                              ▼                               ││  ┌──────────────────────────────────────────────────────┐   ││  │              Lycium 构建系统                          │   ││  │  ┌──────────┐  ┌──────────┐  ┌──────────┐          │   ││  │  │build.sh  │  │envset.sh │  │build_hpk │          │   ││  │  │主构建脚本│  │环境设置  │  │构建执行  │          │   ││  │  └──────────┘  └──────────┘  └──────────┘          │   ││  └──────────────────────────────────────────────────────┘   ││                              │                               ││                              ▼                               ││  ┌──────────────────────────────────────────────────────┐   ││  │              补丁适配层                                │   ││  │           sha_ohos.patch                              │   ││  │  ┌──────────────────────────────────────────────┐    │   ││  │  │ CMakeLists.txt 修改                          │    │   ││  │  │ - 静态链接配置                                │    │   ││  │  │ - OpenHarmony 特定配置                        │    │   ││  │  └──────────────────────────────────────────────┘    │   ││  └──────────────────────────────────────────────────────┘   ││                              │                               ││                              ▼                               ││  ┌──────────────────────────────────────────────────────┐   ││  │              原始 SHA 库                              │   ││  │  BrianGladman/sha (v3ee0d88)                         │   ││  │  - sha1.c / sha1.h                                   │   ││  │  - sha2.c / sha2.h                                   │   ││  │  - hmac.c / hmac.h                                   │   ││  │  - pwd2key.c / pwd2key.h                             │   ││  └──────────────────────────────────────────────────────┘   ││                                                               │└─────────────────────────────────────────────────────────────┘

关键文件详解

HPKBUILD 详细解析

1. 元数据部分

pkgname=sha                                    # 包名称pkgver=3ee0d88fc4f629b2e084f1b4cbf22cd3597542fb  # Git commit hashpkgrel=0                                       # 包释放版本pkgdesc=""# 包描述url="https://github.com/BrianGladman/sha"# 上游地址archs=("armeabi-v7a""arm64-v8a")              # 支持架构license=("the sha license")                    # 许可证depends=()                                     # 运行依赖makedepends=()                                 # 构建依赖

2. 源码配置

source="https://github.com/BrianGladman/sha.git"autounpack=false# 不自动解压downloadpackage=false# 不下载压缩包builddir=$pkgname-${pkgver}# 构建目录download_and_patch_flag=true# 下载和补丁标志

3. prepare() 函数 - 准备阶段

prepare() {if [ "$download_and_patch_flag" == true ]; then# 1. 克隆源码        git clone$source$builddir# 2. 切换到指定版本cd$builddir        git reset --hard $pkgver# 3. 应用 OpenHarmony 补丁        patch -p1 < ../sha_ohos.patch# 4. 标记已完成        download_and_patch_flag=falsefi# 5. 创建构建目录    mkdir -p $builddir/$ARCH-build}

关键点:

  • 使用 git clone 而不是下载压缩包
  • 精确控制源码版本(通过 commit hash)
  • 自动应用适配补丁
  • 为每个架构创建独立的构建目录

4. build() 函数 - 构建阶段

build() {cd$builddir# 使用 OpenHarmony SDK 的 CMake${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" \        -B$ARCH-build -S./ > $buildlog 2>&1# 编译(使用 make 或 ninja)$MAKE VERBOSE=1 -C $ARCH-build >> $buildlog 2>&1    ret=$?cd$OLDPWDreturn$ret}

关键点:

  • 使用 OpenHarmony SDK 提供的工具链
  • 支持多架构并行构建
  • 构建日志记录到 $buildlog
  • 返回编译结果状态码

5. archive() 函数 - 打包阶段 ⭐

archive() {# 1. 创建输出目录    mkdir -p ${LYCIUM_ROOT}/output/$ARCH# 2. 打包 tar.gzpushd$LYCIUM_ROOT/usr/$pkgname/$ARCH        tar -zvcf ${LYCIUM_ROOT}/output/$ARCH/${pkgname}_${pkgver}.tar.gz *popd# 3. 复制 HNP 配置文件    cp hnp.json $LYCIUM_ROOT/usr/$pkgname/$ARCH# 4. 设置架构相关环境变量 ⭐ 关键修复if [ "$ARCH" == "armeabi-v7a" ]; then        setarm32ENV           # ARM32 环境elif [ "$ARCH" == "arm64-v8a" ]; then        setarm64ENV           # ARM64 环境fi# 5. 打包 HNP${HNP_TOOL} pack -i ${LYCIUM_ROOT}/usr/$pkgname/$ARCH \                     -o ${LYCIUM_ROOT}/output/$ARCH/# 6. 清理环境变量if [ "$ARCH" == "armeabi-v7a" ]; then        unsetarm32ENVelif [ "$ARCH" == "arm64-v8a" ]; then        unsetarm64ENVfi}

关键修复点:

  • ✅ 添加了架构特定的环境变量设置
  • ✅ 解决了 HNP_TOOL 找不到的问题
  • ✅ 确保每个架构使用正确的工具链

6. package() 函数 - 安装阶段

package() {cd$builddir# 执行 make install$MAKE VERBOSE=1 -C $ARCH-build install >> $buildlog 2>&1cd$OLDPWD}

sha_ohos.patch 详细解析

这是最重要的适配补丁文件,包含以下关键修改:

1. CMakeLists.txt 修改

原始代码:

add_executable(hmac hmac_test.c)target_link_libraries(hmac PRIVATE sha)

修改后:

add_executable(hmac hmac_test.c)target_link_libraries(hmac PRIVATE sha_static)  # 改为静态链接

修改的文件:

  • hmac → sha_static
  • pwd2key → sha_static
  • sha_test → sha_static
  • sha256sum → sha_static

修改原因:

  • 避免动态链接库找不到的问题
  • 简化部署,无需管理库路径
  • 适合独立运行的工具程序

2. 新增 CMake 配置

# 添加 OpenHarmony 特定配置if(OHOS)    target_compile_options(sha_test PRIVATE -Wno-format-security)endif()

适配流程

完整的适配流程图

┌─────────────────────────────────────────────────────────────┐│                    适配流程开始                              │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  1. 分析原始库                                              ││     - 检查依赖关系                                          ││     - 评估移植难度                                          ││     - 确定适配策略                                          │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  2. 创建 HPKBUILD                                           ││     - 定义包元数据                                          ││     - 配置源码下载                                          ││     - 编写构建函数                                          │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  3. 创建补丁文件                                            ││     - 分析需要修改的内容                                    ││     - 编写 CMakeLists.txt 修改                              ││     - 处理平台特定问题                                      │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  4. 配置测试                                                ││     - 编写 HPKCHECK                                         ││     - 定义测试用例                                          ││     - 验证功能正确性                                        │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  5. 创建配置文件                                            ││     - hnp.json                                              ││     - README 文档                                           ││     - 开源声明                                              │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  6. 构建测试                                                ││     - 执行 ./build.sh sha                                   ││     - 检查构建产物                                          ││     - 验证多架构支持                                        │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  7. 设备测试                                                ││     - 部署到 OpenHarmony 设备                               ││     - 运行测试程序                                          ││     - 验证功能完整性                                        │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│  8. 问题修复                                                ││     - 修复动态链接问题                                      ││     - 优化构建配置                                          ││     - 完善文档说明                                          │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│                    适配流程完成                              │└─────────────────────────────────────────────────────────────┘

技术要点

1. 静态链接 vs 动态链接

特性
动态链接
静态链接(采用)
文件大小
内存占用
部署复杂度
运行时依赖
需要库文件
更新便利性
适用场景
系统库
工具程序

选择理由:

  • SHA 库体积小,静态链接增加的体积可忽略
  • 简化部署,无需管理库路径
  • 避免版本冲突问题
  • 适合独立运行的工具

2. 多架构支持

archs=("armeabi-v7a""arm64-v8a")

实现方式:

  • 为每个架构独立构建
  • 使用架构特定的工具链
  • 生成架构特定的产物
  • 统一的构建流程

环境变量设置:

# ARM32 环境setarm32ENV() {export CC=${OHOS_SDK}/native/llvm/bin/arm-linux-ohos-clangexport CXX=${OHOS_SDK}/native/llvm/bin/arm-linux-ohos-clang++export HNP_TOOL=${OHOS_SDK}/toolchains/hnpcli# ...}# ARM64 环境setarm64ENV() {export CC=${OHOS_SDK}/native/llvm/bin/aarch64-linux-ohos-clangexport CXX=${OHOS_SDK}/native/llvm/bin/aarch64-linux-ohos-clang++export HNP_TOOL=${OHOS_SDK}/toolchains/hnpcli# ...}

3. 补丁管理

补丁格式:

--- a/original_file.txt+++ b/modified_file.txt@@ -line_start,count +line_start,count @@ context_line-removed_line+added_line context_line

补丁应用:

patch -p1 < ../sha_ohos.patch

优势:

  • 保持原始代码完整性
  • 便于版本升级
  • 清晰的修改记录
  • 易于代码审查

4. 构建产物管理

output/├── armeabi-v7a/│   ├── sha.hnp              # HNP 包│   └── sha_*.tar.gz         # 压缩包└── arm64-v8a/    ├── sha.hnp    └── sha_*.tar.gzusr/sha/├── armeabi-v7a/│   ├── bin/                 # 可执行文件│   ├── include/             # 头文件│   └── lib/                 # 库文件└── arm64-v8a/    ├── bin/    ├── include/    └── lib/

常见问题

Q1: 为什么使用 commit hash 作为版本号?

A: 使用 commit hash 的优势:

  • 精确标识源码版本
  • 便于追溯和调试
  • 避免版本号冲突
  • 符合开源项目管理习惯

Q2: 补丁文件的作用是什么?

A: 补丁文件的作用:

  • 修改原始代码以适配 OpenHarmony
  • 保持原始代码不变
  • 便于版本升级和合并
  • 清晰记录所有修改

Q3: HNP 包和 tar.gz 包有什么区别?

A:

包类型
用途
格式
工具
HNP
OpenHarmony 原生包
专有格式
hnpcli
tar.gz
通用压缩包
标准格式
tar

Q4: 如何验证构建是否成功?

A: 验证步骤:

  1. 检查构建日志是否无错误
  2. 检查产物文件是否生成
  3. 在设备上运行测试程序
  4. 验证功能正确性

Q5: 如何添加新的架构支持?

A: 步骤:

  1. 在 HPKBUILD 中添加新架构
  2. 在 envset.sh 中添加环境设置函数
  3. 测试新架构的构建和运行

总结

SHA 库的 鸿蒙PC  适配是一个完整的工程实践,包含以下关键要素:

核心文件

  1. HPKBUILD - 构建配置的核心
  2. HPKCHECK - 质量保证的关键
  3. hnp.json - 部署配置的必需
  4. README_zh.md - 用户使用的指南
  5. README.OpenSource - 合规性的声明

技术要点

  • ✅ 静态链接简化部署
  • ✅ 多架构支持
  • ✅ 补丁管理
  • ✅ 完整的测试验证
  • ✅ 详细的文档说明

适配成果

  • 🎯 成功适配 OpenHarmony 平台
  • 🎯 支持 ARM64 和 ARM 架构
  • 🎯 提供完整的测试工具
  • 🎯 编写详细的文档
  • 🎯 解决动态链接问题

这个适配案例为其他开源库的 鸿蒙PC  移植提供了很好的参考模板。


文档版本: 1.0.0最后更新: 2026-04-07

如果这篇文章对你有帮助,麻烦大家点赞 + 收藏 + 转发三连支持~ 你们的每一份认可,都是我持续输出技术干货的最大动力!后续还会带来更多实操教程,技术解读。记得关注不迷路哦~

也欢迎添加我的联系方式,咱们交个朋友!未来我也会持续分享各类前沿技术干货。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-19 13:28:28 HTTP/2.0 GET : https://c.mffb.com.cn/a/481053.html
  2. 运行时间 : 0.127467s [ 吞吐率:7.85req/s ] 内存消耗:4,341.40kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cf007207f4074aa2023b6b39e54975be
  1. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/runtime/temp/cefbf809ba1a84190cb04b0cb7abcf79.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000567s ] mysql:host=127.0.0.1;port=3306;dbname=c_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000832s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000298s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000287s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000667s ]
  6. SELECT * FROM `set` [ RunTime:0.000238s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000734s ]
  8. SELECT * FROM `article` WHERE `id` = 481053 LIMIT 1 [ RunTime:0.000559s ]
  9. UPDATE `article` SET `lasttime` = 1776576508 WHERE `id` = 481053 [ RunTime:0.000871s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000391s ]
  11. SELECT * FROM `article` WHERE `id` < 481053 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001473s ]
  12. SELECT * FROM `article` WHERE `id` > 481053 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003755s ]
  13. SELECT * FROM `article` WHERE `id` < 481053 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004721s ]
  14. SELECT * FROM `article` WHERE `id` < 481053 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007226s ]
  15. SELECT * FROM `article` WHERE `id` < 481053 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006723s ]
0.130002s