节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
2.82 KiB
Stardust
<?php
/**
 * 星尘配置中心使用示例
 * 
 * 演示如何使用 StardustConfig 从配置中心获取配置
 */

require_once __DIR__ . '/../src/StardustConfig.php';

// 初始化配置客户端
$config = new StardustConfig(
    'http://star.newlifex.com:6600',  // 星尘服务器地址
    'MyPHPApp',                        // 应用标识
    '',                                // 应用密钥(可选)
    'dev'                              // 作用域:dev/test/prod
);

// 开启调试模式(可选)
$config->setDebug(true);

// 登录
if (!$config->login()) {
    die("登录失败\n");
}

echo "登录成功\n\n";

// ========== 示例1:获取所有配置 ==========
echo "示例1:获取所有配置\n";
echo str_repeat("-", 50) . "\n";

$configs = $config->getAll();
if ($configs !== null) {
    echo "配置版本: " . $config->getVersion() . "\n";
    echo "更新时间: " . $config->getUpdateTime() . "\n";
    echo "配置数量: " . count($configs) . "\n\n";
    
    echo "配置内容:\n";
    foreach ($configs as $key => $value) {
        echo "  {$key} = {$value}\n";
    }
} else {
    echo "获取配置失败\n";
}

// ========== 示例2:获取单个配置项 ==========
echo "\n示例2:获取单个配置项\n";
echo str_repeat("-", 50) . "\n";

$dbHost = $config->get('database.host', 'localhost');
$dbPort = $config->get('database.port', 3306);
$dbName = $config->get('database.name', 'test');

echo "数据库主机: {$dbHost}\n";
echo "数据库端口: {$dbPort}\n";
echo "数据库名称: {$dbName}\n";

// ========== 示例3:检查配置更新 ==========
echo "\n示例3:检查配置更新\n";
echo str_repeat("-", 50) . "\n";

if ($config->hasNewVersion()) {
    echo "有新版本配置等待发布\n";
    echo "当前版本: " . $config->getVersion() . "\n";
    echo "新版本号: " . $config->getNextVersion() . "\n";
    echo "发布时间: " . $config->getNextPublish() . "\n";
} else {
    echo "配置已是最新版本: " . $config->getVersion() . "\n";
}

// ========== 示例4:配置热更新(轮询模式) ==========
echo "\n示例4:配置热更新(轮询模式)\n";
echo str_repeat("-", 50) . "\n";
echo "模拟每30秒检查一次配置更新...\n";

for ($i = 1; $i <= 3; $i++) {
    echo "\n第{$i}次检查:\n";
    
    $oldVersion = $config->getVersion();
    $configs = $config->getAll();
    $newVersion = $config->getVersion();
    
    if ($configs !== null) {
        if ($newVersion > $oldVersion) {
            echo "  配置已更新: {$oldVersion} -> {$newVersion}\n";
            echo "  重新加载配置...\n";
            // 这里可以重新初始化应用配置
        } else {
            echo "  配置未变化,版本: {$newVersion}\n";
        }
    }
    
    if ($i < 3) {
        echo "  等待30秒...\n";
        sleep(30);
    }
}

echo "\n示例运行完成\n";