2016-02-14 3 views
0

Я использовал @file_get_contents и get_headers, оба они медленные, даже если URL-адрес ниже 1ko, попытался использовать cURL, но он не поддерживается сервером. Есть ли какая-нибудь быстрая функция для использования?Быстрая функция проверки наличия url PHP

+2

Понятия не имею, что вы имеете в виду под «URL-адрес существует» и «URL ниже 1KO» означают, но если вы хотите, чтобы проверить, является ли запрос к результатам URL в какой-то ошибки или нет, то вам просто нужно сделать запрос HEAD, никоим образом не обойти это. 'get_headers()' - самый эффективный способ сделать запрос HEAD. – arkascha

+0

Url существует средство (не 404) ?? и поместите свой код в том, что вы пробовали, используя file_get_contents и get_headers. –

+0

@arkascha Я имею ввиду «URL существует» (не 404) действительный url ... и URL ниже 1ko .. Я имею в виду размер страницы, я уже пытался использовать get_headers(), но это замедляет время загрузки страницы, потому что он обрабатывает более 50 URL-адресов. – Mohamed

ответ

1

с помощью метода, предложенного @arkascha вы могли бы сделать что-то вроде этого:

$url='http://stackoverflow.com'; 
$options=array(
    'http'=>array(
     'method'  => 'HEAD', 
     'User-Agent' => $_SERVER['HTTP_USER_AGENT'] 
    ) 
); 
stream_context_get_default($options); 
$headers=get_headers($url, 1); 
echo $headers[0]; 

Это кажется довольно быстро, и вы могли бы еще разобрать ответ найти, если состояние 200 или иным образом.

0

Frank Koehl сделал аккуратную небольшую функцию, чтобы сделать именно это и вернуть http-статус URL-адреса.

http status code function

/** 
* @author Frank Koehl 
* @src http://frankkoehl.com/2009/09/http-status-code-curl-php/ 
*/ 
function get_status($url) 
{ 
    // must set $url first. Duh... 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
    // do your curl thing here 
    $data = curl_exec($ch); 
    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 
    return $http_status; 
} 
+0

O.P. сказал, что у них не было поддержки завитка. – Progrock

Смежные вопросы