承接 xincheng/yii2-health 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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
  • 可选依赖友好:默认 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(用于 k8s exec readinessProbe)
  • 其它状态:返回 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 的 httpGet probe 无法直接用,请改用上面的 exec probe
  • 如果 Pod 里有 nginx 容器 + php-fpm 容器 两个容器:通常把 httpGet probe 配在 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 xincheng/yii2-health 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 59
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 28
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-19