iprog / apollo-php
apollo配置中心php客户端(2345.com)
v2.0.0
2020-01-02 05:08 UTC
Requires
- php: ^7.1
- ext-json: *
- dreamcat/array_2_class: ^1.2
- guzzlehttp/guzzle: ^6.5
- myclabs/php-enum: ^1.7
- psr/http-client: ^1.0
- psr/log: ^1.1
- zendframework/zend-diactoros: ^2.2
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2025-03-01 00:19:28 UTC
README
安装
composer require iprog/apollo-php
依赖
- PHP 7.1 or later
如何使用:
可以起一个定时任务,然后运行如下脚本即可,也可以将如下脚本写在一个死循环里面进行循环拉取, 具体各个项目可根据自己的情况决定自己的运用方案
require_once __DIR__ . "/xxx/vendor/autoload.php"; $config = new ApolloPhp\Popo\Config\ApolloHttpClientConfig(); $config->setApolloServerUrl("http://172.17.18.211:3880") ->setApolloAppId("php-unit-test-case") ->setApolloCluster("DEV"); $apolloRedisParam = new ApolloPhp\Popo\ApolloPullParam('redis'); $apolloRedisParam->setClientIp('127.0.0.1'); $apolloRedisParam->setReleaseKey(''); $apolloMysqlParam = new ApolloPhp\Popo\ApolloPullParam('mysql'); $apolloMysqlParam->setClientIp('127.0.0.1'); $apolloMysqlParam->setReleaseKey(''); $apolloPullParams = [$apolloRedisParam, $apolloMysqlParam]; $client = new ApolloPhp\Api\Impl\ApolloHttpClient($config); $apolloConfigResult = $client->pullConfigs($apolloPullParams); // 这里会将拉取的配置保存在php对应的配置目录里面 foreach ($apolloConfigResult as $result) { $apolloConfig = new ApolloPhp\Config\Impl\ApolloConfig('D://config'); $apolloConfig->parseConfig($result); }
apollo配置中心如何做配置:
需要说明的是,apollo配置中心的配置以键值对形式存在,所以,为了方便apollo-php在代码层面做解析,apollo-php拟定了一个统一的配置方式,以下举例说明。
比如,现在我们要配置redis的链接参数信息,首先我们需要在apollo配置中心配置一个redis的namespace,然后在该namespace,可以做如下配置:
dev.master.host=127.0.0.1 dev.master.port=6379 dev.master.pwd=#343kdjer$ dev.slave.host=127.0.0.1 dev.slave.port=6379 dev.slave.pwd=#343kdjer$ test.master.host=127.0.0.1 test.master.port=6379 test.master.pwd=#343kdjer$ test.slave.host=127.0.0.1 test.slave.port=6379 test.slave.pwd=#343kdjer$ prod.master.host=127.0.0.1 prod.master.port=6379 prod.master.pwd=#343kdjer$ prod.slave.host=127.0.0.1 prod.slave.port=6379 prod.slave.pwd=#343kdjer$
可以从上面的配置看出,键使用点(.)做分割,则apollo-php解析后,会形成如下配置文件:
<?php return [ 'dev' => [ 'master' => [ 'host' => '127.0.0.1', 'port' => '6379', 'pwd' => '#343kdjer$' ], 'slave' => [ 'host' => '127.0.0.1', 'port' => '6379', 'pwd' => '#343kdjer$' ], ], 'test' => [ 'master' => [ 'host' => '127.0.0.1', 'port' => '6379', 'pwd' => '#343kdjer$' ], 'slave' => [ 'host' => '127.0.0.1', 'port' => '6379', 'pwd' => '#343kdjer$' ], ], 'prod' => [ 'master' => [ 'host' => '127.0.0.1', 'port' => '6379', 'pwd' => '#343kdjer$' ], 'slave' => [ 'host' => '127.0.0.1', 'port' => '6379', 'pwd' => '#343kdjer$' ], ], ]; ?>