ThinkPHP Nacos 2.x 扩展
composer require bklab/think-nacos-sdk
还未发布,暂时无法使用
composer.json 中添加如下配置
{
"repositories": [
{
"type": "path",
"url": "path/to/think-nacos-sdk",
"options": {
"versions": {
"bklab/think-nacos-sdk": "0.0.1"
}
}
}
]
}
{
"require": {
"bklab/think-nacos-sdk": "0.0.1"
}
}
ThinkPHP框架在应用初始化时
ThinkPHP 文档 -> 架构 -> 事件 -> 内置事件
在config/nacos.php 中正确填写服务器和Nacos的相关信息
// 事件定义文件
return [
// ......
'listen' => [
'AppInit' => [
'think\sdk\alibaba\nacos\v2\Nacos', //推荐放到末尾
],
],
// ......
];
public function register_nacos()
{
// 设置用户永远执行
set_time_limit(0);
// 设置用户永不超时
ini_set('max_execution_time', '0');
// 设置用户中断时继续执行
ignore_user_abort(true);
// 获取本机内网IP
$ip = gethostbyname(gethostname());
$ip = $this->request->get('ip', $ip);
$port = $this->request->get('port', 80);
// 具体配置信息见下方
return '已将' . $ip . ':' . $port . '注册到Nacos。';
}
$nacos = new \think\sdk\alibaba\nacos\v2\Nacos()
->register() // 注册服务到Nacos
;
// 如需动态配置Nacos,请使用此方法获取
$config = new \think\sdk\alibaba\nacos\v2\config\NacosConfig::getInstance();
// 默认通过此方法获取本机内网IP
$config ->setServerIp(gethostbyname(gethostname()));
// 如监听端口非80,且配置文件未填写,则需要手动设置
$config ->setServerPort(8080);
$nacos = new \think\sdk\alibaba\nacos\v2\Nacos()
->register() // 注册服务到Nacos
;
\think\Event::listen(
\think\sdk\alibaba\nacos\v2\event\NacosConfigChangeEvent::class,
function ($raw_config){
dump('nacos config change', $raw_config);
}
);
$nacos = new \think\sdk\alibaba\nacos\v2\Nacos()
->listen() // 开始监听(每秒查询更改)
->cancelListening() // 当需要停止监听时,调用
;
启动方式:
可以在启动时,可以通过http调用一个地址来实现配置的加载。
此接口需要设置不自动关闭,否则会在自动关闭时停止监听。
此接口需要自行实现,不在本扩展内实现。
-sdk:
-alibaba:
-nacos:
-v2:
-Nacos.php: 主类,用于注册服务器地址,监听配置更新
-auth: 鉴权相关
-config: 配置相关
-enum: 枚举类
-event: 事件类
-request: # 请求类 https://nacos.io/zh-cn/docs/v2/guide/user/open-api.html
-auth: 权限认证 https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
-cluster: 集群管理
-config: 配置管理
-discovery: # 服务发现
-client: 客户端相关
-instance: 实例相关
-service: 服务相关
-system: 系统相关
-loader: 连接负载管理
-name_space: 命名空间
-response: 全部响应数据类
-util: 工具类
任何BUG或者建议,欢迎提交issue或者PR。