gpt4 book ai didi

php - 如何使用 PHP 以编程方式检查有效(未失效)链接?

转载 作者:IT王子 更新时间:2023-10-29 00:21:15 26 4
gpt4 key购买 nike

给定一个 url 列表,我想检查每个 url:

  • 返回 200 OK 状态码
  • 在 X 时间内返回响应

最终目标是一个能够将 url 标记为可能损坏的系统,以便管理员可以查看它们。

脚本将用 PHP 编写,很可能每天通过 cron 运行。

该脚本将一次处理大约 1000 个 url。

问题有两部分:

  • 这样的操作有什么大问题吗?您遇到了什么问题?
  • 考虑到准确性和性能,在 PHP 中检查 url 状态的最佳方法是什么?

最佳答案

使用 PHP cURL 扩展。与 fopen() 不同,它还可以发出足以检查 URL 可用性的 HTTP HEAD 请求,并为您节省大量带宽,因为您不必下载整个页面进行检查。

作为起点,您可以使用如下函数:

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;
}

但是,有大量可能的优化:您可能希望重新使用 cURL 实例,如果每个主机检查多个 URL,甚至重新使用连接。

哦,这段代码确实严格检查 HTTP 响应代码 200。它不遵循重定向 (302)——但也有一个 cURL 选项。

关于php - 如何使用 PHP 以编程方式检查有效(未失效)链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com