domovoy/app/Services/Discovery/PingScanner.php

23 lines
579 B
PHP

<?php
declare(strict_types=1);
namespace Domovoy\Services\Discovery;
class PingScanner
{
/**
* Check if host is alive via ICMP ping.
* Requires ping command in container.
*/
public function ping(string $ip, int $timeoutMs = 500): bool
{
// Use ping with timeout (Linux: -W in seconds)
$timeoutSec = max(1, (int)ceil($timeoutMs / 1000));
$output = [];
$exitCode = 0;
exec(sprintf('ping -c 1 -W %d %s 2>/dev/null', $timeoutSec, escapeshellarg($ip)), $output, $exitCode);
return $exitCode === 0;
}
}