PHP Zstd 扩展项目教程

PHP Zstd 扩展项目教程

php-ext-zstdZstd Extension for PHP项目地址:https://gitcode.com/gh_mirrors/ph/php-ext-zstd

1. 项目的目录结构及介绍

php-ext-zstd/
├── config.m4
├── config.w32
├── CREDITS
├── EXPERIMENTAL
├── LICENSE
├── php_zstd.h
├── README.md
├── zstd.c
├── zstd_compress.c
├── zstd_decompress.c
├── zstd_stream.c
└── tests/
    ├── 001.phpt
    ├── 002.phpt
    └── ...
  • config.m4config.w32: 用于配置扩展的构建过程。
  • CREDITS: 项目贡献者列表。
  • EXPERIMENTAL: 实验性功能说明。
  • LICENSE: 项目许可证。
  • php_zstd.h: 扩展的头文件。
  • README.md: 项目说明文档。
  • zstd.c, zstd_compress.c, zstd_decompress.c, zstd_stream.c: 扩展的主要源代码文件。
  • tests/: 包含测试文件,用于验证扩展的功能。

2. 项目的启动文件介绍

项目的启动文件主要是 zstd.c,它是扩展的入口文件。该文件包含了扩展的初始化函数 zstd_module_entry,负责注册扩展的函数和常量。

PHP_MINIT_FUNCTION(zstd) {
    // 注册常量和函数
    REGISTER_LONG_CONSTANT("ZSTD_COMPRESS_LEVEL_MIN", ZSTD_COMPRESS_LEVEL_MIN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("ZSTD_COMPRESS_LEVEL_MAX", ZSTD_COMPRESS_LEVEL_MAX, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("ZSTD_COMPRESS_LEVEL_DEFAULT", ZSTD_COMPRESS_LEVEL_DEFAULT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("LIBZSTD_VERSION_STRING", ZSTD_VERSION_STRING, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("LIBZSTD_VERSION_NUMBER", ZSTD_VERSION_NUMBER, CONST_CS | CONST_PERSISTENT);

    return SUCCESS;
}

3. 项目的配置文件介绍

项目的配置文件主要是 config.m4,它用于配置扩展的构建过程。该文件包含了如何编译和链接扩展的指令。

PHP_ARG_WITH(libzstd, for libzstd support,
[  --with-libzstd             Include libzstd support])

if test "$PHP_LIBZSTD" != "no"; then
    SEARCH_PATH="/usr/local /usr"
    SEARCH_FOR="/include/zstd.h"
    if test -r $PHP_LIBZSTD/$SEARCH_FOR; then
        LIBZSTD_DIR=$PHP_LIBZSTD
    else
        AC_MSG_CHECKING([for libzstd in default path])
        for i in $SEARCH_PATH ; do
            if test -r $i/$SEARCH_FOR; then
                LIBZSTD_DIR=$i
                AC_MSG_RESULT(found in $i)
            fi
        done
    fi

    if test -z "$LIBZSTD_DIR"; then
        AC_MSG_RESULT([not found])
        AC_MSG_ERROR([Please install the libzstd development package])
    fi

    PHP_ADD_INCLUDE($LIBZSTD_DIR/include)
    PHP_ADD_LIBRARY_WITH_PATH(zstd, $LIBZSTD_DIR/lib, ZSTD_SHARED_LIBADD)
    PHP_SUBST(ZSTD_SHARED_LIBADD)

    PHP_NEW_EXTENSION(zstd, zstd.c zstd_compress.c zstd_decompress.c zstd_stream.c, $ext_shared)
fi

该配置文件主要负责检查 libzstd 库的存在,并将其包含在扩展的构建过程中。

php-ext-zstdZstd Extension for PHP项目地址:https://gitcode.com/gh_mirrors/ph/php-ext-zstd

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平列金Hartley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值