2

我的 mysql 数据库中有大约 10000 个 url。我想使用 php 检查这些页面是否存在。

关键是我不想浪费我的带宽。

是否可以仅检查 http 状态代码?

这是我当前的 curl 代码?

$http = curl_init($url);
$result = curl_exec($http);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
curl_close($http);
echo $http_status;
4

1 回答 1

3

使用以下cURL 选项发出HEAD请求:

CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_CUSTOMREQUEST => 'HEAD',

您还可以使用:

CURLOPT_FAILONERROR => true,

每当返回错误的 HTTP 代码时都curl_exec返回 false。

如果您有 10,000 个 URL,并且这是一项重复性任务,您可能希望查看curl_multi_*函数并以 4、8 个或类似的批量处理 URL。提速意义重大。

于 2013-06-10T12:08:13.307 回答