Files
2026-07-24 14:59:44 +01:00

25 lines
844 B
PHP

<?php
namespace Modules\CloudDevOps\Services;
use Illuminate\Support\Facades\Http;
use Modules\CloudDevOps\Models\DeploymentHealthCheck;
final class HealthCheckRunner
{
public function run(DeploymentHealthCheck $check): DeploymentHealthCheck
{
$started = microtime(true);
try {
$response = Http::timeout(10)->get((string) $check->endpoint);
$status = $response->status() === $check->expected_status ? 'healthy' : 'unhealthy';
$message = 'HTTP '.$response->status();
} catch (\Throwable $e) {
$status = 'unhealthy';
$message = $e->getMessage();
} $check->update(['status' => $status, 'response_time_ms' => (int) ((microtime(true) - $started) * 1000), 'checked_at' => now(), 'message' => $message]);
return $check->refresh();
}
}