给出一个网址列表,我想检查每个网址:
最终目标是一个能够将URL标记为可能已损坏的系统,以便管理员可以查看它们.
该脚本将使用PHP编写,并且很可能每天通过cron运行.
该脚本将一次处理大约1000个网址.
问题分为两部分:
Hen*_*ing 18
使用PHP cURL扩展.与fopen()不同,它还可以发出HTTP HEAD请求,这些请求足以检查URL的可用性并节省大量的带宽,因为您不必下载要检查的整个页面.
作为一个起点,你可以使用这样的函数:
function is_available($url, $timeout = 30) {
$ch = curl_init(); // get cURL handle
// set cURL options
$opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
CURLOPT_URL => $url, // set URL
CURLOPT_NOBODY => true, // do a HEAD request only
CURLOPT_TIMEOUT => $timeout); // set timeout
curl_setopt_array($ch, $opts);
curl_exec($ch); // do it!
$retval = curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200; // check if HTTP OK
curl_close($ch); // close handle
return $retval;
}
Run Code Online (Sandbox Code Playgroud)
但是,有大量可能的优化:您可能希望重新使用cURL实例,如果每个主机检查多个URL,甚至可以重用连接.
哦,这段代码严格检查HTTP响应代码200.它不遵循重定向(302) - 但也有一个cURL选项.
| 归档时间: |
|
| 查看次数: |
16703 次 |
| 最近记录: |