What are some common strategies for handling timeouts and error responses when checking the existence of external pages in PHP?

When checking the existence of external pages in PHP, it is important to handle timeouts and error responses gracefully to prevent the script from crashing or hanging indefinitely. One common strategy is to set a timeout for the HTTP request using the `CURLOPT_TIMEOUT` option in cURL. Additionally, you can check for specific error codes in the response and handle them accordingly.

$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // Set timeout to 10 seconds
$response = curl_exec($ch);

if($response === false) {
    $error = curl_error($ch);
    echo "Error: $error";
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    if($httpCode >= 400) {
        echo "HTTP Error: $httpCode";
    } else {
        echo "Page exists!";
    }
}

curl_close($ch);