feat: 新增 8 个语言客户端 SDK

- PHP 客户端 (kenaito-conf-php-client)
- .NET 客户端 (kenaito-conf-dotnet-client)
- C 客户端 (kenaito-conf-c-client)
- C++ 客户端 (kenaito-conf-cpp-client)
- Lua 客户端 (kenaito-conf-lua-client)
- Kotlin 客户端 (kenaito-conf-kotlin-client)
- Rust 客户端 (kenaito-conf-rust-client)
- Ruby 客户端 (kenaito-conf-ruby-client)

每个客户端包含完整的 SDK 实现和 demo 示例,支持:
- 配置拉取(全量/增量)
- AES-128-CBC 解密
- 本地缓存
- 变更回调
- Token 认证

更新根目录 README.md:
- 技术栈列表新增 8 种语言
- 项目结构新增 16 个目录
- 客户端接入章节新增 8 个使用示例
This commit is contained in:
2026-03-05 21:14:42 +08:00
parent 2f5c343347
commit 4c3648cf7f
40 changed files with 2824 additions and 2 deletions
+61
View File
@@ -0,0 +1,61 @@
<?php
require_once __DIR__ . '/../kenaito-conf-php-client/autoload.php';
use KenaitoConf\Config;
use KenaitoConf\ConfigClient;
$configValues = [
'database.host' => getenv('DATABASE_HOST') ?: '192.168.1.1',
'database.port' => getenv('DATABASE_PORT') ?: '8888',
'database.name' => getenv('DATABASE_NAME') ?: 'xxxx',
'database.user' => getenv('DATABASE_USER') ?: 'xxxx',
'database.password' => getenv('DATABASE_PASSWORD') ?: 'xxxxxxxx',
];
$config = new Config([
'baseUrl' => getenv('KENAITO_BASE_URL') ?: 'http://localhost:8080',
'appName' => getenv('KENAITO_APP_NAME') ?: 'kenaito-springboot-demo',
'env' => getenv('KENAITO_PROFILE') ?: 'daily',
'version' => getenv('KENAITO_VERSION') ?: 'latest',
'token' => getenv('KENAITO_TOKEN') ?: '',
'syncInterval' => (int)(getenv('KENAITO_SYNC_INTERVAL') ?: 30),
'cacheDir' => getenv('KENAITO_CACHE_DIR') ?: '.',
]);
$client = new ConfigClient($config);
$client->onChange(function ($changed) use (&$configValues) {
foreach ($changed as $k => $v) {
if (isset($configValues[$k])) {
$configValues[$k] = $v;
error_log("config updated: {$k} = {$v}");
}
}
});
try {
$client->start();
$remote = $client->getAll();
foreach ($configValues as $k => &$v) {
if (isset($remote[$k])) {
$v = $remote[$k];
}
}
error_log("loaded " . count($remote) . " configs from remote");
} catch (Exception $e) {
error_log("failed to init config client: " . $e->getMessage());
}
$port = (int)(getenv('SERVER_PORT') ?: 8084);
echo "Server started on port {$port}\n";
echo "Current configs:\n";
foreach ($configValues as $k => $v) {
echo " {$k} = {$v}\n";
}
while (true) {
pcntl_signal_dispatch();
usleep(100000);
}