30 lines
727 B
PHP
30 lines
727 B
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class HealthController extends Controller
|
|
{
|
|
/**
|
|
* 健康检查端点,供部署脚本与监控探针使用。
|
|
* 定义为控制器而非闭包,保证 route:cache 无隐患。
|
|
*/
|
|
public function __invoke(): JsonResponse
|
|
{
|
|
$dbOk = true;
|
|
try {
|
|
DB::connection()->getPdo();
|
|
} catch (\Throwable) {
|
|
$dbOk = false;
|
|
}
|
|
|
|
return response()->json([
|
|
'status' => $dbOk ? 'ok' : 'degraded',
|
|
'database' => $dbOk ? 'up' : 'down',
|
|
'time' => now()->toIso8601String(),
|
|
], $dbOk ? 200 : 503);
|
|
}
|
|
}
|