Skip to content

配置

下面是一个完整的配置样例:

php
<?php

declare(strict_types=1);

use think\health\Check\CheckCache;
use think\health\Check\CheckDataBase;
use think\health\Check\CheckEnv;
use think\health\Check\CheckFolder;
use think\health\Check\CheckHttp;
use think\health\Contract\CheckAbstracte;
use think\health\Contract\ReportAbstracte;
use think\health\Report\ReportHttp;

/**
 * 健康检查配置
 */
return [
    /**
     * 健康检查路由
     * @var string|bool
     */
    'url' => '/health',
    /**
     * 上报器
     * 必须要继承 ReportAbstracte 类
     * @var array<ReportAbstracte>
     */
    'reportHandles' => [
        new ReportHttp(
            /**
             * 上报地址
             * @var string
             */
            url: 'https://your-server.com/health/report',
            /**
             * 超时时间
             * @var integer
             */
            timeout: 30,
        )
    ],
    /**
     * 检查器
     * 必须要继承 CheckAbstracte 类
     * @var array<CheckAbstracte>
     */
    'checkHandles' => [
        new CheckDataBase(
            /**
             * 需要检测的数据库连接
             * 如果为空,则检测所有数据库连接
             * @var array<string>
             */
            connections: []
        ),
        new CheckCache(
            /**
             * 需要检测的缓存
             * 如果为空,则检测所有缓存
             * @var array<string>
             */
            stores: [],
            /**
             * 缓存key
             * @var string
             */
            key: 'health_check_cache_key',
            /**
             * 缓存value
             * @var string
             */
            value: 'health_check_cache_value'
        ),
        new CheckEnv(
            /**
             * 需要检测的key值
             *
             * falsy 为空或0
             * truthy 为非空或非0
             * string 为字符串
             * int 为数字
             *
             * @var array<string,string>
             */
            keys: [
                'APP_DEBUG' => 'falsy',

                'DATABASE.TYPE' => 'mysql',
                'DATABASE.HOST' => 'string',
                'DATABASE.NAME' => 'string',
                'DATABASE.USER' => 'string',
                'DATABASE.PASS' => 'string',
                'DATABASE.PORT' => 'int',
                'DATABASE.CHARSET' => 'utf8mb4',
            ]
        ),
        new CheckFolder(
            /**
             * 需要检查的文件夹
             * 键为文件夹路径,值为允许的最大大小(字节)
             * @var array<string,int>
             */
            folders: [
                runtime_path() => 1024 * 1024 * 1024
            ]
        ),
        new CheckHttp(
            /**
             * 需要检查的网络资源
             * @var string
             */
            url: 'https://your-server.com/resource',
            /**
             * 超时时间
             * @var integer
             */
            timeout: 30,
            /**
             * 允许的HTTP状态码
             * @var array<integer>
             */
            statusCodes: [200, 201, 202, 204],
        )
    ],
];