neo-rainboy / aerospike-client-php
Aerospike PHP客户端,作为PHP8的C扩展
Requires
- php: ^8.0
README
注意:此客户端支持PHP版本 >= 8。如果您正在寻找支持PHP版本至5的旧客户端,可以在aerospike-client-php5存储库中找到。
与先前Aerospike PHP客户端的差异
- LDT支持已移除。
- 方法参数的类型检查更严格。如果您不确定函数的参数是整数还是字符串,我们建议将其转换为方法指定的类型。开启strict_types模式可能有助于捕捉一些问题。
- 如果构造函数无法连接到集群,将引发异常。
- \Aerospike\Bytes将被存储为AS_BYTES_BLOB类型,而不是AS_BYTES_PHP。此更改允许与其他客户端有更好的兼容性。
- 相应地,如果服务器上存储的数据为AS_BYTES_BLOB且未注册反序列化器,则将返回Aerospike\Bytes。先前版本的Aerospike PHP客户端在未注册反序列化器的情况下遇到AS_BYTES_BLOB将返回字符串。注意不推荐同时使用\Aerospike\Bytes和用户指定的反序列化器,因为这可能导致错误。
- 已移除对PHP版本 < 8 的支持。
- INI条目aerospike.serializer现在接受整数值。0表示无序列化器,1表示默认PHP序列化,2表示用户指定序列化器。有关代码值的更多信息,请参阅配置。
- 构造函数将不再尝试为用户创建唯一的SHM密钥。如果shm配置数组中未指定密钥,则使用默认值。在构造函数中提供的密钥将优先于INI中指定的值。
- 客户端使用SHM密钥时使用的共享内存布局已更改。默认密钥也已更改,以防止新旧客户端之间意外共享。
- info调用的响应格式可能已更改。现在,响应的开头包括请求。
- 使用initKey与摘要时,摘要现在必须是恰好20字节。
Aerospike::LOG_LEVEL_*
常量的整数值已更改。除非用户将日志级别作为整数提供而不是使用常量,否则这不会影响用户。Aerospike::LOG_LEVEL_OFF
已被移除。它不再有任何影响。
文档
Aerospike PHP客户端的文档可以在doc目录中找到。关于实现内部结构的说明在doc/internals.md。
Aerospike数据库的完整文档可在http://www.aerospike.com/docs/找到。
依赖项
CentOS和RedHat (yum)
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel
# You will need PHP8 development headers. If PHP8 was manually installed, these should be available
# by default; Otherwise, you will need to fetch them from a repository, the package name may vary.
sudo yum install php-pear # unless PHP was manually installed
Ubuntu和Debian (apt)
sudo apt-get install build-essential autoconf libssl-dev
sudo apt-get install php8.0-dev php-pear # unless PHP was manually installed
OS X
默认情况下,OS X 将缺少命令行工具。在 Mavericks(OS X 10.9)及更高版本中,这些工具可以在不安装 Xcode 的情况下安装。
xcode-select --install # install the command line tools, if missing
依赖项可以通过 OS X 的包管理器 Homebrew 安装。
brew update && brew doctor
brew install automake
brew install openssl
要切换 PHP 版本,请查看这个片段。
由于此库依赖于 OpenSSL,因此在安装过程中可能会偶尔出现链接问题。为了解决这些问题,我们建议运行 brew info openssl
此命令将显示有关 openssl 头文件和库位置的一些信息。特别是应该有一个类似于以下内容的段落:为了编译器找到此软件,您可能需要设置:LDFLAGS: -L/usr/local/opt/openssl/lib CPPFLAGS: -I/usr/local/opt/openssl/include
为了正确链接和编译库,您可以设置两个环境变量 AS_OSX_OPENSSL_INC
和 AS_OSX_OPENSSL_LINK
为相应的值(如果路径如上所述):export AS_OSX_OPENSSL_INC="-I/usr/local/opt/openssl/include" export AS_OSX_OPENSSL_LINK="-L/usr/local/opt/openssl/lib"
目前不支持 Windows。
安装
使用 Composer 构建
使用 Composer,您可以下载并构建 PHP 扩展
composer require neo-rainboy/aerospike-client-php v6.4.4
find vendor/neo-rainboy/aerospike-client-php/ -name "*.sh" -exec chmod +x {} \;
cd vendor/neo-rainboy/aerospike-client-php/ && sudo composer run-script post-install-cmd
手动构建
要手动构建 PHP 扩展,您需要从 Github 下载最新版本,然后在 src/
目录中运行 build.sh
脚本。
cd src
./build.sh
这将根据需要将 Aerospike C 客户端 SDK 下载到 src/../aerospike-client-c/
,并启动 make
。
安装 PHP 扩展
要安装 PHP 扩展,请
make install
php -i | grep ".ini "
现在编辑 php.ini 文件。如果 PHP 配置了 --with-config-file-scan-dir(通常设置为 /etc/php.d/
),您可以在该目录中创建一个 aerospike.ini
文件,否则直接编辑 php.ini
。添加以下指令
extension=aerospike.so
aerospike.udf.lua_user_path=/path/to/aerospike/usr-lua
现在 aerospike 模块应该对 PHP CLI 可用
php -m | grep aerospike
aerospike
请记住,如果您使用 PHP 与 Nginx 或 Apache 一起,则可能存在针对 web 服务器的单独 php.ini
配置文件。将您刚刚创建的 aerospike.ini
复制到 /etc/8/apache2/conf.d/
、/etc/php8/fpm/conf.d/
或 web 服务器的配置包含目录所在的任何位置,然后执行优雅的重启。
许可证
Aerospike PHP 客户端根据 Apache License,Version 2 的条款提供,如文件 LICENSE 中所述。
个别文件可能根据其自己的特定许可证提供,所有许可证都与 Apache License,Version 2 兼容。请查看个别文件以获取详细信息。