Нет необходимости использовать CURL, file_get_contents($url);
вернет false в случае сбоя запроса (любой другой код HTTP, кроме 2xx), что может быть более полезно для того, что вы пытаетесь сделать, например:
function urlExists($url)
{
return (bool) @file_get_contents($url);
}
Возвращает true, если URL возвращает полезное содержимое, в противном случае - false.
РЕДАКТИРОВАТЬ : Вот более быстрый способ (он запрашивает только заголовки) и первый байт вместо всей страницы:
function urlExists($url)
{
return (bool) @file_get_contents($url, false, null, 0, 1);
}
urlExists('https://stackoverflow.com/iDontExist'); // false
Однако в сочетании с другим вопросом может быть разумнее использовать что-то вроде этого:
function url($url)
{
return @file_get_contents($url);
}
$content = url('https://stackoverflow.com/');
// request has failed (404, 5xx, etc...)
if ($content === false)
{
// delete or store as "failed" in the DB
}
// request was successful
else
{
$hash = md5($content); // md5() should be enough but you can also use sha1()
// store $hash in the DB to keep track of changes
}
Или, если вы используете PHP 5.1+, вам нужно всего лишь:
$hash = @md5_file($url);
$hash
будет иметь значение false, если URL-адрес не загружается, в противном случае он вернет MD5-хэш содержимого.
Милостиво украдено у @ Джейми . =) * * 1 029
Таким образом, вам нужно сделать только один запрос вместо двух. =) * * Тысяча тридцать одна