yii2集成nacos配置中心
nacos配置:
命名空间:
配置中心:
- 下载php-nacos客户端依赖:
composer require alibaba/nacos
代码调整:
获取nacos 配置接口:【console 定时任务 一分钟执行一次,或者 监听 listener 方法(每29.6S获取一次配置信息)】
public function actionNacos()
{
// $LARAVEL_NACOS_HOST = 'http://localhost:8848';//单节点
$LARAVEL_NACOS_HOST = 'http://localhost';//集群
$LARAVEL_ENV = 'dev';
$LARAVEL_NACOS_DATAID = 'CONTEST_SERVICE';
$LARAVEL_NACOS_GROUPID = 'DEFAULT_GROUP';
$LARAVEL_NACOS_NAMESPACEID = '63246c14-5a96-466e-8cf9-335d73d25ebc';
//拉取nacos的配置文件
try{
\alibaba\nacos\NacosConfig::setSnapshotPath(dirname(dirname(__DIR__)) . "/common/config/nacos/config");
$init = \alibaba\nacos\Nacos::init(
$LARAVEL_NACOS_HOST,
$LARAVEL_ENV,
$LARAVEL_NACOS_DATAID,
$LARAVEL_NACOS_GROUPID,
$LARAVEL_NACOS_NAMESPACEID
)->runOnce();
}catch (\Exception $e){
echo 'error';
// var_dump($e->getMessage());
}
}
index.php 配置文件修改:【params-local 配置获取 同下】
<?php
require __DIR__ . '/../../env.php';
require __DIR__ . '/../../vendor/autoload.php';
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../common/config/bootstrap.php';
require __DIR__ . '/../config/bootstrap.php';
$LARAVEL_ENV = 'dev';
$LARAVEL_NACOS_DATAID = 'CONTEST_SERVICE';
$LARAVEL_NACOS_GROUPID = 'DEFAULT_GROUP';
$LARAVEL_NACOS_NAMESPACEID = '63246c14-5a96-466e-8cf9-335d73d25ebc';
\alibaba\nacos\NacosConfig::setSnapshotPath(dirname(dirname(__DIR__)).
"/common/config/nacos/config");
$filename = \alibaba\nacos\failover\LocalConfigInfoProcessor::getSnapshotFile(
$LARAVEL_ENV,
$LARAVEL_NACOS_DATAID,
$LARAVEL_NACOS_GROUPID,
$LARAVEL_NACOS_NAMESPACEID
);
$commonMainLocal = '';
if (file_exists($filename)) {
// \Dotenv\Dotenv::createImmutable(dirname($filename),$LARAVEL_NACOS_DATAID)->load();//动态加载 .env文件 yii不需要
$commonMainLocal = json_decode(file_get_contents($filename),true);
}
if (!empty($commonMainLocal)){
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/../../common/config/main.php',
$commonMainLocal,
require __DIR__ . '/../config/main.php',
require __DIR__ . '/../config/main-local.php'
);
}else{
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/../../common/config/main.php',
require __DIR__ . '/../../common/config/main-local.php',
require __DIR__ . '/../config/main.php',
require __DIR__ . '/../config/main-local.php'
);
}
(new yii\web\Application($config))->run();