xincheng/yii2-health
Composer 安装命令:
composer require xincheng/yii2-health
包简介
Health check extension for Yii2 (HTTP + CLI + Kubernetes probes).
README 文档
README
面向 Kubernetes 的 Yii2 健康检查扩展(支持 liveness/readiness 与 CLI 探针),可自动探测项目中已配置的中间件并输出统一的健康报告。
功能特性
- 即插即用:通过
yiisoft/yii2-composer自动 bootstrap,无需手动改动路由规则。 - 两种探针模型:
- HTTP 探针(Web / php-fpm 模型):
/livez、/readyz、/healthz。 - CLI 探针(纯 worker/脚本模型):
php yii health/run。
- HTTP 探针(Web / php-fpm 模型):
- 可选依赖友好:默认
enabled=auto,未配置的组件会返回skipped,不会 fatal。 - 多 DB 场景:支持多个
yii\db\Connection并存,配合autoDiscover自动发现/逐个检测。 - 已内置 checks:MySQL/Redis/MongoDB/Elasticsearch/RabbitMQ/Queue/TDengine/Kafka。
环境要求
- PHP
>= 7.4 - Yii2
~2.0.49
安装
方式一:Composer 安装(推荐)
在项目根目录执行:
composer require xincheng/yii2-health composer dump-autoload
使用
CLI(适合 worker / cron / 脚本容器)
php yii health/run --format=json php yii health/run --format=text
退出码:
- overall
critical:返回非 0(用于 k8sexecreadinessProbe) - 其它状态:返回 0
HTTP(适合 Web / php-fpm 模型)
业务接口:
GET /health.json:JSON 明细(HTTP 200/503)GET /health/summary:只返回ok|warning|critical|skipped(HTTP 200/503)GET /health:HTML 面板(HTTP 200/503)
Kubernetes 探针接口:
GET /livez:liveness(永远 200,返回ok,不做外部依赖检查)GET /readyz:readiness(200/503,返回ready/not-ready)- 默认
full=0:不跑autoDiscover的检查(避免多 DB/慢依赖拖慢探针) - 可选:
/readyz?full=1包含autoDiscover;/readyz?checks=db,redis只跑指定 checks
- 默认
GET /healthz:k8s 风格 JSON(默认精简;verbose=1/失败时带checks[])- 示例:
/healthz?verbose=1&full=1
- 示例:
Kubernetes 配置示例
模型一:纯 CLI / Worker(无 Nginx、无 HTTP 入口)
推荐用 exec probe:
readinessProbe: exec: command: ["sh", "-lc", "php yii health/run --format=json > /dev/null"] initialDelaySeconds: 10 periodSeconds: 15 timeoutSeconds: 10 failureThreshold: 3 # livenessProbe 不建议做外部依赖检查(避免依赖抖动导致重启风暴) livenessProbe: exec: command: ["sh", "-lc", "php -r \"echo 'ok';\" > /dev/null"] initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 3 failureThreshold: 3
模型二:Web / PHP-FPM(有 HTTP 服务)
推荐用 httpGet probe:
ports: - name: http containerPort: 80 livenessProbe: httpGet: path: /livez port: http initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 3 failureThreshold: 3 readinessProbe: httpGet: path: /readyz port: http initialDelaySeconds: 10 periodSeconds: 15 timeoutSeconds: 10 failureThreshold: 3
补充说明:
- 如果你的容器 只有 php-fpm:9000(没有 nginx/http server),k8s 的
httpGetprobe 无法直接用,请改用上面的 exec probe。 - 如果 Pod 里有 nginx 容器 + php-fpm 容器 两个容器:通常把
httpGetprobe 配在 nginx 容器上;php-fpm 容器可选用 exec probe 做兜底。
配置
默认配置见 config/health.php,也可以在应用配置中覆盖(示例):
'components' => [ 'health' => [ 'class' => \Xincheng\Health\HealthComponent::class, 'autoDiscover' => false, // worker/readiness 建议关闭 'checks' => [ 'db' => [ 'enabled' => false, // 显式关闭:请使用 bool,避免字符串歧义 ], 'kafka' => [ 'enabled' => 'auto', 'brokers' => 'kafka-1:9092,kafka-2:9092', ], ], ], ],
测试
./vendor/bin/phpunit -c vendor/xincheng/yii2-health/phpunit.xml.dist
License
MIT
xincheng/yii2-health 适用场景与选型建议
xincheng/yii2-health 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 59 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 12 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「health」 「yii2」 「kubernetes」 「healthcheck」 「readiness」 「liveness」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 xincheng/yii2-health 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 xincheng/yii2-health 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 xincheng/yii2-health 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A custom URL rule class for Yii 2 which allows to create translated URL rules
Is your Laravel app OK? Health checks running in production to ensure you can sleep well at night and be sure everything is still OK.
Provides healthcheck endpoints in accordance with IETF's healthcheck draft RFC
Provide status and health api endpoints
Generates Kubernetes API objects from the OpenAPI spec.
SoftWax Health Check Bundle for Symfony framework
统计信息
- 总下载量: 59
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 28
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-12-19