Я пытаюсь написать PHP-скрипт, который будет проверять HTTP-статус веб-сайта как можно быстрее.
В настоящее время я использую get_headers() и запускаю его в цикле из 200 случайных URL-адресов из базы данных mysql.
Чтобы проверить все 200 - требуется в среднем 2м 48с.
Могу ли я что-нибудь сделать, чтобы сделать это (намного) быстрее?
(Я знаю о fsockopen — он может проверять порт 80 на 200 сайтах за 20 секунд — но это не то же самое, что запрашивать код состояния http, потому что сервер может отвечать на порт — но может неправильно загружать веб-сайты и т. д.)
Вот код..
<?php
function get_httpcode($url) {
$headers = get_headers($url, 0);
// Return http status code
return substr($headers[0], 9, 3);
}
###
## Grab task and execute it
###
// Loop through task
while($data = mysql_fetch_assoc($sql)):
$result = get_httpcode('http://'.$data['url']);
echo $data['url'].' = '.$result.'<br/>';
endwhile;
?>