PHP code example of ssh / nacos-sdk-php
1. Go to this page and download the library: Download ssh/nacos-sdk-php library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ssh / nacos-sdk-php example snippets
use Nacos\Nacos;
// 初始化Nacos客户端
$nacos = new Nacos(
'http://localhost:8848', // Nacos服务器地址
'public', // 命名空间ID,默认为'public'
'', // Access Key(可选)
'', // Secret Key(可选)
9848, // gRPC端口(可选,默认9848)
null // 日志接口(可选,实现Psr\Log\LoggerInterface)
);
// 发布配置
$result = $nacos->config()->publishConfig(
'test-config', // dataId
'DEFAULT_GROUP', // group
'Hello Nacos!', // 配置内容
'text' // 配置类型
);
if ($result) {
echo "配置发布成功!\n";
}
// 获取配置
$content = $nacos->config()->getConfig(
'test-config', // dataId
'DEFAULT_GROUP' // group
);
echo "配置内容: " . $content . "\n";
// 删除配置
$result = $nacos->config()->deleteConfig(
'test-config', // dataId
'DEFAULT_GROUP' // group
);
if ($result) {
echo "配置删除成功!\n";
}
// 监听配置变更(长轮询)
$nacos->config()->listenConfig(
'test-config', // dataId
'DEFAULT_GROUP', // group
function($data) { // 回调函数
echo "配置变更了!\n";
echo "变更数据: " . json_encode($data) . "\n";
},
30 // 超时时间(秒)
);
// 注册持久化服务实例
$result = $nacos->discovery()->registerInstance(
'user-service', // 服务名
'127.0.0.1', // IP地址
8080, // 端口
'DEFAULT_GROUP', // 分组
['version' => '1.0.0'], // 元数据
10, // 权重
false // 是否为临时服务(false表示持久化)
);
if ($result) {
echo "服务注册成功!\n";
}
// 注销服务实例
$result = $nacos->discovery()->deregisterInstance(
'user-service', // 服务名
'127.0.0.1', // IP地址
8080, // 端口
'DEFAULT_GROUP' // 分组
);
if ($result) {
echo "服务注销成功!\n";
}
// 获取所有服务实例
$instances = $nacos->discovery()->getAllInstances(
'user-service', // 服务名
'DEFAULT_GROUP', // 分组
true // 是否只获取健康实例
);
echo "实例数量: " . count($instances['hosts']) . "\n";
echo "实例列表: " . json_encode($instances, JSON_PRETTY_PRINT) . "\n";
// 获取单个健康实例
$instance = $nacos->discovery()->selectOneHealthyInstance(
'user-service', // 服务名
'DEFAULT_GROUP' // 分组
);
if ($instance) {
echo "健康实例: " . json_encode($instance) . "\n";
echo "IP: " . $instance['ip'] . "\n";
echo "端口: " . $instance['port'] . "\n";
}
// 调用服务的GET接口
$result = $nacos->invoker()->get(
'user-service', // 服务名
'/api/users', // 接口路径
['page' => 1, 'limit' => 10], // 查询参数
'DEFAULT_GROUP', // 分组(可选)
3 // 重试次数(可选)
);
// 处理响应
if ($result['success']) {
echo "状态码: " . $result['status_code'] . "\n";
echo "数据: " . json_encode($result['data']) . "\n";
echo "原始响应: " . $result['raw'] . "\n";
}
// 调用服务的POST接口
$result = $nacos->invoker()->post(
'user-service', // 服务名
'/api/users', // 接口路径
[ // 请求数据
'name' => '张三',
'email' => '[email protected] ',
'age' => 25
],
'DEFAULT_GROUP', // 分组(可选)
3 // 重试次数(可选)
);
// 调用服务的PUT接口
$result = $nacos->invoker()->request(
'PUT', // HTTP方法
'user-service', // 服务名
'/api/users/1', // 接口路径
['name' => '更新后的名字'], // 请求数据
'DEFAULT_GROUP', // 分组(可选)
3 // 重试次数(可选)
);
// 单独获取健康实例
$instance = $nacos->invoker()->getHealthyInstance(
'user-service',
'DEFAULT_GROUP'
);
if ($instance) {
echo "找到健康实例!\n";
echo "IP: " . $instance['ip'] . "\n";
echo "端口: " . $instance['port'] . "\n";
echo "元数据: " . json_encode($instance['metadata']) . "\n";
}
// 构建服务URL(不发送请求)
$instance = $nacos->invoker()->getHealthyInstance('user-service');
if ($instance) {
$url = $nacos->invoker()->buildUrl($instance, '/api/users');
echo "服务URL: " . $url . "\n";
// 输出: http://127.0.0.1:8080/api/users
}
// 清除指定服务的缓存
$nacos->invoker()->clearCache('user-service');
// 清除所有服务的缓存
$nacos->invoker()->clearCache();
// 注册HTTPS服务
$nacos->discovery()->registerInstance(
'secure-service',
'127.0.0.1',
443,
'DEFAULT_GROUP',
['secure' => 'true'] // 标记为安全服务
);
// 调用时会自动使用HTTPS
$result = $nacos->invoker()->get('secure-service', '/api/data');
// 创建Feign客户端(声明式)
$userClient = $nacos->feign('user-service');
// 指定分组
$orderClient = $nacos->feign('order-service', 'DEFAULT_GROUP');
// 获取用户列表
$result = $userClient->get('/api/users', [
'page' => 1,
'limit' => 10
]);
// 处理响应
if ($result['success']) {
echo "状态码: " . $result['status_code'] . "\n";
echo "用户列表: " . json_encode($result['data']) . "\n";
}
// 创建用户
$result = $userClient->post('/api/users', [
'name' => '张三',
'email' => '[email protected] ',
'age' => 25
]);
if ($result['success']) {
echo "创建用户成功,ID: " . $result['data']['id'] . "\n";
}
// 更新用户
$result = $userClient->put('/api/users/1', [
'name' => '更新后的名字',
'email' => '[email protected] '
]);
// 删除用户
$result = $userClient->delete('/api/users/1');
// 使用任意HTTP方法
$result = $userClient->request('PATCH', '/api/users/1', [
'status' => 'active'
]);
// 自定义重试次数(默认3次)
$result = $userClient->get('/api/users', ['page' => 1], 5);
// 为不同服务创建不同的Feign客户端
$userClient = $nacos->feign('user-service');
$orderClient = $nacos->feign('order-service');
$productClient = $nacos->feign('product-service');
// 调用不同的服务
$users = $userClient->get('/api/users');
$orders = $orderClient->get('/api/orders');
$products = $productClient->get('/api/products');
$result = $nacos->invoker()->get('user-service', '/api/users', ['page' => 1]);
$userClient = $nacos->feign('user-service');
$result = $userClient->get('/api/users', ['page' => 1]);
// 获取 gRPC 客户端
$grpcClient = $nacos->grpc();
// 检查 gRPC 服务是否可用
if ($grpcClient->isAvailable()) {
echo "gRPC 服务可用!\n";
} else {
echo "gRPC 服务不可用,将使用 HTTP 协议\n";
}
// 发布配置(通过 gRPC)
$result = $nacos->config()->publishConfig(
'test-config',
'DEFAULT_GROUP',
'Hello Nacos gRPC!'
);
// 获取配置(通过 gRPC)
$content = $nacos->config()->getConfig(
'test-config',
'DEFAULT_GROUP'
);
// 删除配置(通过 gRPC)
$result = $nacos->config()->deleteConfig(
'test-config',
'DEFAULT_GROUP'
);
// 注册服务实例(通过 gRPC)
$result = $nacos->discovery()->registerInstance(
'user-service',
'127.0.0.1',
8080,
'DEFAULT_GROUP',
['version' => '1.0.0'],
10,
true
);
// 获取服务实例(通过 gRPC)
$instances = $nacos->discovery()->getAllInstances(
'user-service',
'DEFAULT_GROUP',
true
);
// 注销服务实例(通过 gRPC)
$result = $nacos->discovery()->deregisterInstance(
'user-service',
'127.0.0.1',
8080,
'DEFAULT_GROUP'
);
bash
composer bash
php test-step-by-step.php
bash
php test-config-listener.php
bash
php test-grpc.php