{"id":14966469,"url":"https://github.com/xbyter/apollo-client-php","last_synced_at":"2025-10-25T16:30:49.759Z","repository":{"id":153853191,"uuid":"630813936","full_name":"xbyter/apollo-client-php","owner":"xbyter","description":"Apollo client for php，阿波罗PHP客户端。不依赖框架并支持自定义配置格式同步（默认支持.env格式配置同步）。支持Supervisor和定时任务方式实时同步。已在生产环境稳定运行","archived":false,"fork":false,"pushed_at":"2024-09-09T03:39:03.000Z","size":19,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T08:05:40.437Z","etag":null,"topics":["apollo","apollo-client","laravel","laravel-apollo","php","slimphp-apollo","smyfony","smyfony-apollo","thinkphp","thinkphp-apollo","yii","yii-apollo"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xbyter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-21T08:01:22.000Z","updated_at":"2024-09-09T03:38:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"70792b8d-b8dc-42d5-904e-94bf35e1adca","html_url":"https://github.com/xbyter/apollo-client-php","commit_stats":{"total_commits":9,"total_committers":1,"mean_commits":9.0,"dds":0.0,"last_synced_commit":"2827337df2451c646ccb52dc62284bb2aabc038f"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fapollo-client-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fapollo-client-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fapollo-client-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fapollo-client-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xbyter","download_url":"https://codeload.github.com/xbyter/apollo-client-php/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238174132,"owners_count":19428630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apollo","apollo-client","laravel","laravel-apollo","php","slimphp-apollo","smyfony","smyfony-apollo","thinkphp","thinkphp-apollo","yii","yii-apollo"],"created_at":"2024-09-24T13:36:25.772Z","updated_at":"2025-10-25T16:30:49.417Z","avatar_url":"https://github.com/xbyter.png","language":"PHP","readme":"# 基于携程Apollo的PHP客户端\n\n## 说明\n基于携程Apollo的PHP客户端，不依赖第三方扩展和框架。可用于Laravel, ThinkPHP, YII, Symfony, Swoole等框架。默认支持.env文件的配置同步，如需支持其他格式的配置同步可增加新的Handler处理器，新的Handler处理器需实现`Xbyter\\ApolloClient\\Handlers\\HandlerInterface`接口。详见`Hander处理器`\n\n## 安装\n```\ncomposer require xbyter/apollo-client\n```\n\n## 使用\n### 代码示例apollo_config_sync.php\n```php\nuse Xbyter\\ApolloClient\\ApolloClient;\nuse Xbyter\\ApolloClient\\ApolloConfig;\nuse Xbyter\\ApolloClient\\ApolloConfigSync;\nuse Xbyter\\ApolloClient\\Handlers\\ApolloEnvHandler;\n\ndefine('BASE_PATH', dirname(__DIR__) . '/'); //项目根目录\n\ninclude BASE_PATH . 'vendor/autoload.php';\n\n//系统.env配置，阿波罗的配置会同步到该文件\n$sysEnvPath = BASE_PATH . '.env';\n//阿波罗配置文件位置，需要放在本地，也可以直接走环境变量$_ENV（需要设置php.ini：variables_order = \"EGPCS\"）\n$apolloEnvFile = '.apollo.env';\n\n//解析.env文件\n$dotenv = Dotenv\\Dotenv::create(__DIR__, $apolloEnvFile);\n$dotenv-\u003eload();\n\n//阿波罗配置\n$apolloConfig = new ApolloConfig();\n$apolloConfig-\u003econfigServerUrl = $_ENV['APOLLO_CONFIG_SERVER_URL'];\n$apolloConfig-\u003eappId = $_ENV['APOLLO_APP_ID'];\n$apolloConfig-\u003ecluster = $_ENV['APOLLO_CLUSTER'];\n$apolloConfig-\u003esecret = $_ENV['APOLLO_SECRET'];\n\n\n//开始同步配置到.env\n$timeout = (int)($argv[1] ?? 0);//定时任务跑一般设置为60，supervisor跑可不设置\n$apolloClient = new ApolloClient($apolloConfig);\n$handler = new ApolloEnvHandler($sysEnvPath);\n$sync = new ApolloConfigSync($apolloClient);\n$sync-\u003eaddHandler($_ENV['APOLLO_NAMESPACE'] ?? 'application', $handler);\n\n//如果需要执行Laravel的artisan config:cache命令，则建议加下下面Handler。\n$configCacheHandler = new ApolloArtisanConfigCacheHandler(BASE_PATH);\n$sync-\u003eaddHandler($_ENV['APOLLO_NAMESPACE'] ?? 'application', $configCacheHandler);\n\n//用force方法强制同步配置一次\n$sync-\u003eforce();\n//或者常驻执行\n$sync-\u003erun($_SERVER['SERVER_ADDR'], $timeout);\n\n```\n\n\n### 配置示例（.apollo.env）\n```\n//不限制配置读取方式，依据具体代码实现\nAPOLLO_CONFIG_SERVER_URL=阿波罗配置同步地址\nAPOLLO_APP_ID=app\nAPOLLO_CLUSTER=default\nAPOLLO_NAMESPACE=application\nAPOLLO_SECRET=\n```\n\n### 使用定时任务同步配置（可实时同步）\n```\n//以下命令每分钟执行一次，每次会保持住60s进程，在此期间会实时监控配置变更\n* * * * * php apollo_config_sync.php 60\n```\n\n### 使用Supervisor同步配置\n```\n[program:apollo]\nprocess_name=%(program_name)s_%(process_num)02d\ncommand=php /home/www/app.com/apollo_config_sync.php\nautostart=true\nautorestart=true\nuser=www\nnumprocs=1\nredirect_stderr=true\nstopwaitsecs=60\nstdout_logfile=/home/www/app.com/apollo.log\n```\n\n## Hander处理器（可实现多个namespace或多种配置方式同步）\n代码默认实现了.env文件的配置同步，如需其他格式的配置同步可增加新的Handler处理器，新的Handler处理器需实现`Xbyter\\ApolloClient\\Handlers\\HandlerInterface`接口\n```php\n$apolloClient = new ApolloClient($apolloConfig);\n//.env处理器\n$handler = new ApolloEnvHandler($sysEnvPath);\n$sync = new ApolloConfigSync($apolloClient);\n$sync-\u003eaddHandler($_ENV['APOLLO_NAMESPACE'], $handler);\n$sync-\u003eaddHandler('阿波罗命名空间namespace1', 新的处理器1);//每个namespace都可以有不同/相同的处理方式\n$sync-\u003eaddHandler('阿波罗命名空间namespace1', 新的处理器2);\n$sync-\u003eaddHandler('阿波罗命名空间namespace2', 新的处理器3);\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxbyter%2Fapollo-client-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxbyter%2Fapollo-client-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxbyter%2Fapollo-client-php/lists"}