23 lines
579 B
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;
|
|
}
|
|
}
|