How important is it to test the reachability of URLs using PHP functions like get_headers() and what are the best practices for handling potential inconsistencies in their behavior?

It is important to test the reachability of URLs using PHP functions like get_headers() to ensure that the URLs are valid and accessible. One potential inconsistency in their behavior is that some servers may block requests from certain user agents, leading to false negatives. To handle this, it's best to set a custom user agent header in the request to mimic a common browser.

$url = 'http://example.com';
$options = [
    'http' => [
        'method' => 'HEAD',
        'header' => 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    ]
];

$context = stream_context_create($options);
$headers = get_headers($url, 0, $context);

if ($headers !== false) {
    echo "URL is reachable";
} else {
    echo "URL is not reachable";
}