PHPackages                             xbyter/apollo-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. xbyter/apollo-client

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

xbyter/apollo-client
====================

基于携程Apollo 阿波罗的PHP客户端，不依赖第三方扩展和框架并支持自定义配置格式同步（默认支持.env格式配置同步）。

v1.0.5(1y ago)38.2k↑400%11MITPHPPHP ^7.0 || ^8.0

Since Apr 21Pushed 1y ago1 watchersCompare

[ Source](https://github.com/xbyter/apollo-client-php)[ Packagist](https://packagist.org/packages/xbyter/apollo-client)[ Docs](https://github.com/xbyter/apollo-client-php)[ RSS](/packages/xbyter-apollo-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (7)Used By (1)

基于携程Apollo的PHP客户端
=================

[](#基于携程apollo的php客户端)

说明
--

[](#说明)

基于携程Apollo的PHP客户端，不依赖第三方扩展和框架。可用于Laravel, ThinkPHP, YII, Symfony, Swoole等框架。默认支持.env文件的配置同步，如需支持其他格式的配置同步可增加新的Handler处理器，新的Handler处理器需实现`Xbyter\ApolloClient\Handlers\HandlerInterface`接口。详见`Hander处理器`

安装
--

[](#安装)

```
composer require xbyter/apollo-client

```

使用
--

[](#使用)

### 代码示例apollo\_config\_sync.php

[](#代码示例apollo_config_syncphp)

```
use Xbyter\ApolloClient\ApolloClient;
use Xbyter\ApolloClient\ApolloConfig;
use Xbyter\ApolloClient\ApolloConfigSync;
use Xbyter\ApolloClient\Handlers\ApolloEnvHandler;

define('BASE_PATH', dirname(__DIR__) . '/'); //项目根目录

include BASE_PATH . 'vendor/autoload.php';

//系统.env配置，阿波罗的配置会同步到该文件
$sysEnvPath = BASE_PATH . '.env';
//阿波罗配置文件位置，需要放在本地，也可以直接走环境变量$_ENV（需要设置php.ini：variables_order = "EGPCS"）
$apolloEnvFile = '.apollo.env';

//解析.env文件
$dotenv = Dotenv\Dotenv::create(__DIR__, $apolloEnvFile);
$dotenv->load();

//阿波罗配置
$apolloConfig = new ApolloConfig();
$apolloConfig->configServerUrl = $_ENV['APOLLO_CONFIG_SERVER_URL'];
$apolloConfig->appId = $_ENV['APOLLO_APP_ID'];
$apolloConfig->cluster = $_ENV['APOLLO_CLUSTER'];
$apolloConfig->secret = $_ENV['APOLLO_SECRET'];

//开始同步配置到.env
$timeout = (int)($argv[1] ?? 0);//定时任务跑一般设置为60，supervisor跑可不设置
$apolloClient = new ApolloClient($apolloConfig);
$handler = new ApolloEnvHandler($sysEnvPath);
$sync = new ApolloConfigSync($apolloClient);
$sync->addHandler($_ENV['APOLLO_NAMESPACE'] ?? 'application', $handler);

//如果需要执行Laravel的artisan config:cache命令，则建议加下下面Handler。
$configCacheHandler = new ApolloArtisanConfigCacheHandler(BASE_PATH);
$sync->addHandler($_ENV['APOLLO_NAMESPACE'] ?? 'application', $configCacheHandler);

//用force方法强制同步配置一次
$sync->force();
//或者常驻执行
$sync->run($_SERVER['SERVER_ADDR'], $timeout);
```

### 配置示例（.apollo.env）

[](#配置示例apolloenv)

```
//不限制配置读取方式，依据具体代码实现
APOLLO_CONFIG_SERVER_URL=阿波罗配置同步地址
APOLLO_APP_ID=app
APOLLO_CLUSTER=default
APOLLO_NAMESPACE=application
APOLLO_SECRET=

```

### 使用定时任务同步配置（可实时同步）

[](#使用定时任务同步配置可实时同步)

```
//以下命令每分钟执行一次，每次会保持住60s进程，在此期间会实时监控配置变更
* * * * * php apollo_config_sync.php 60

```

### 使用Supervisor同步配置

[](#使用supervisor同步配置)

```
[program:apollo]
process_name=%(program_name)s_%(process_num)02d
command=php /home/www/app.com/apollo_config_sync.php
autostart=true
autorestart=true
user=www
numprocs=1
redirect_stderr=true
stopwaitsecs=60
stdout_logfile=/home/www/app.com/apollo.log

```

Hander处理器（可实现多个namespace或多种配置方式同步）
----------------------------------

[](#hander处理器可实现多个namespace或多种配置方式同步)

代码默认实现了.env文件的配置同步，如需其他格式的配置同步可增加新的Handler处理器，新的Handler处理器需实现`Xbyter\ApolloClient\Handlers\HandlerInterface`接口

```
$apolloClient = new ApolloClient($apolloConfig);
//.env处理器
$handler = new ApolloEnvHandler($sysEnvPath);
$sync = new ApolloConfigSync($apolloClient);
$sync->addHandler($_ENV['APOLLO_NAMESPACE'], $handler);
$sync->addHandler('阿波罗命名空间namespace1', 新的处理器1);//每个namespace都可以有不同/相同的处理方式
$sync->addHandler('阿波罗命名空间namespace1', 新的处理器2);
$sync->addHandler('阿波罗命名空间namespace2', 新的处理器3);
```

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~101 days

Total

6

Last Release

617d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f99d7f145bf92288181ca5159ca57e88f65eb1bb1a8fcadf85315dfbe662153e?d=identicon)[X-Byter](/maintainers/X-Byter)

---

Top Contributors

[![xbyter](https://avatars.githubusercontent.com/u/12113089?v=4)](https://github.com/xbyter "xbyter (12 commits)")

---

Tags

apolloapollo-clientlaravellaravel-apollophpslimphp-apollosmyfonysmyfony-apollothinkphpthinkphp-apolloyiiyii-apollophpclientapollo

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/xbyter-apollo-client/health.svg)

```
[![Health](https://phpackages.com/badges/xbyter-apollo-client/health.svg)](https://phpackages.com/packages/xbyter-apollo-client)
```

###  Alternatives

[graze/telnet-client

Telnet client written in PHP

50233.9k4](/packages/graze-telnet-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
