aerospike / aerospike-php
Aerospike PHP 扩展预览版
v1.1.0
2024-06-05 15:14 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^9
- dev-main
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
- v0.5.0-beta
- v0.4.0-alpha
- v0.3.0-alpha
- v0.1.0-alpha1
- dev-stage
- dev-CLIEN-2832-testing
- dev-client_2832_support_readtouchttlpercent
- dev-CLIENT-2906-change-service-name
- dev-CLIENT-2836-pkg
- dev-durable_delete_default_false
- dev-partition_scan_query
- dev-local_daemon
- dev-go-local-daemon-test&docs
- dev-on_demand_password_hashing
- dev-php-rs
- dev-CLIENT-2648-auth-fix
- dev-CLIENT-2426-Release
- dev-CLIENT-2425-Testing
- dev-CLIENT-2422-Code-completion
This package is auto-updated.
Last update: 2024-09-05 15:52:53 UTC
README
Aerospike PHP 8+ 客户端(v1.0.0)
PHP 8+ 的 Aerospike 客户端库。
PHP-Client 介绍
这是 Aerospike PHP 客户端的文档。PHP 客户端包含两个主要组件。首先,我们有一个用 Rust 编写的强大 PHP 客户端和一个用 Go 编写的连接管理器,作为 PHP 进程之间的共享资源。连接管理器守护进程有效地处理 PHP 进程和 Aerospike 服务器之间的所有请求和响应。
要求
- PHP v8.1+
- Cargo
- Aerospike 服务器
- Linux 或 Darwin
- PHPUnit v10
- Rustc >= v1.74
- Go 工具链 Go 工具链 - Go 编程语言
- Protobuf 编译器 protoc-gen-go 命令 - google.golang.org/protobuf/cmd/protoc-gen-go - Go 包
- ext-php-rs v0.12.0 github 仓库链接 注意:请参阅在此处设置 ext-php-rs 的说明 [这里]
设置
- 克隆 PHP-Client 仓库
cd php-client
设置 Aerospike 客户端连接管理器
安装依赖项并运行 Aerospike 连接管理器
- 确保已安装 go 工具链。从 Go 编程语言 下载包。按照步骤正确安装 Go。 注意:请确保 PATH 变量已更新为 GOBIN 路径。
- 安装 protobuf 编译器
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
- 进入 php-client/aerospike-connection-manager 目录
cd php-client/aerospike-connection-manager
- 构建并运行 aerospike-connection-manager
sudo make
注意:请查看 php-client/aerospike-connection-manager
目录下的 README.md,以获取有关设置 aerospike-connection-manager 和配置客户端策略的更多信息。
构建并安装 PHP-Client
- 检查 PHP 版本
php -v
- 安装和设置 Aerospike 服务器
- 要默认路径下构建和安装
PHP-Client
,运行 makefile
cd php-client
sudo make
- 要手动构建和安装
PHP-Client
,运行以下命令
cd php-client cargo clean && cargo build --release
- 构建成功后,将
target/release/libaerospike$(EXTENSION)
[EXTENSION = .so 对于 Linux 和 .dylib 对于 Mac 和 Windows] 文件从到 PHP 扩展目录路径的文件中复制。 - 将
extension=libaerospike$(EXTENSION)
添加到您的php.ini
文件中。 - 运行
phpunit tests/
以确保设置和构建成功。
注意:为了测试能够成功运行,Aerospike 服务器必须正在运行。
运行您的 PHP 项目
- 运行您的 PHP 脚本
- 在运行脚本之前,必须运行 Aerospike 连接管理器和 Aerospike 服务器。
- 一旦构建成功并且所有先决条件都满足,将 Aerospike 命名空间导入您的 PHP 脚本。
- 要连接到 Aerospike 连接管理器,请添加
$socket = "/tmp/asld_grpc.sock"; $client = Client::connect($socket);
- 运行 php 脚本。如果没有错误,则表示您已成功连接到 Aerospike 数据库。
注意:如果连接管理器守护进程崩溃,您必须手动从其路径中删除文件 /tmp/asld_grpc.sock
。
sudo rm -r /tmp/asld_grpc.soc
- 配置策略:配置策略(读取、写入、批量和信息) - 这些策略可以通过PHP代码中的getter和setter进行设置。创建该策略类的对象时,将初始化该策略的默认值。例如
// Instantiate the WritePolicy object $writePolicy = new WritePolicy(); $writePolicy->setRecordExistsAction(RecordExistsAction::Update); $writePolicy->setGenerationPolicy(GenerationPolicy::ExpectGenEqual); $writePolicy->setExpiration(Expiration::seconds(3600)); // Expiring in 1 hour $writePolicy->setMaxRetries(3); $writePolicy->setSocketTimeout(5000);
文档
- 参考文档可在此处找到[这里] (https://aerospike.github.io/php-client/)
- Aerospike文档可在此处找到https://aerospike.com/docs/
问题
如果有任何错误、功能请求或反馈 -> 请在GitHub上创建一个问题。Aerospike客户端工程团队将定期审查问题。
用法
以下是在Aerospike数据库中进行CRUD操作的非常简单的示例。
<?php namespace Aerospike; try{ $socket = "/tmp/asld_grpc.sock"; $client = Client::connect($socket); var_dump($client->socket); }catch(AerospikeException $e){ var_dump($e); } $key = new Key("namespace", "set_name", 1); //PUT on differnet types of values $wp = new WritePolicy(); $bin1 = new Bin("bin1", 111); $bin2 = new Bin("bin2", "string"); $bin3 = new Bin("bin3", 333.333); $bin4 = new Bin("bin4", [ "str", 1984, 333.333, [1, "string", 5.1], [ "integer" => 1984, "float" => 333.333, "list" => [1, "string", 5.1] ] ]); $bin5 = new Bin("bin5", [ "integer" => 1984, "float" => 333.333, "list" => [1, "string", 5.1], null => [ "integer" => 1984, "float" => 333.333, "list" => [1, "string", 5.1] ], "" => [ 1, 2, 3 ], ]); $client->put($wp, $key, [$bin1, $bin2, $bin3, $bin4, $bin5]); //GET $rp = new ReadPolicy(); $record = $client->get($rp, $key); var_dump($record->bins); //UPDATE $client->prepend($wp, $key, [new Bin("bin2", "prefix_")]); $client->append($wp, $key, [new Bin("bin2", "_suffix")]); //DELETE $deleted = $client->delete($wp, $key); var_dump($deleted); $client->close()
批量操作示例
<?php namespace Aerospike; $namespace = "test"; $set = "test"; $socket = "/tmp/asld_grpc.sock"; $client = Client::connect($socket); echo "* Connected to the local daemon: $client->hosts \n"; $key = new Key($namespace, $set, 1); $wp = new WritePolicy(); $client->put($wp, $key, [new Bin("bini", 1), new Bin("bins", "b"), new Bin("bin1", [1, 2, 3, 4])]); $bwp = new BatchWritePolicy(); $exp = Expression::lt(Expression::intBin("bin1"), Expression::intVal(1)); $batchWritePolicy->setFilterExpression($exp); $ops = [Operation::put(new Bin("put_op", "put_val"))]; $bw = new BatchWrite($bwp, $key, $ops); $brp = new BatchReadPolicy(); $br = new BatchRead($brp, $key, []); $bdp = new BatchDeletePolicy(); $bd = new BatchDelete($bdp, $key); $bp = new BatchPolicy(); $recs = $client->batch($bp, [$bw, $br, $bd]); var_dump($recs);
要查看更详细的示例,可以查看示例目录php-client/examples