25 lines
844 B
PHP
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();
|
|
}
|
|
}
|