private function canReusePort()
{
if (stripos(PHP_OS, "WIN") === 0) {
return true;
}
$flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
$ctx = stream_context_create(["socket" => ["so_reuseport" => true]]);
if (!($sock1 = @stream_socket_server('127.0.0.1:0', $errno, $errstr, $flags, $ctx))) {
return false;
}
$addr = stream_socket_get_name($sock1, false);
if (!($sock2 = @stream_socket_server($addr, $errno, $errstr, $flags, $ctx))) {
return false;
}
@fclose($sock1);
@fclose($sock2);
return true;
}