【发布时间】:2013-03-09 05:10:59
【问题描述】:
我正在使用以下内容来检查页面是否存在。
for($i = 620; $i <= 630; $i++)
{
$url = 'http://fantasy.mlssoccer.com/web/api/elements/'.$i.'/';
$headers = @get_headers($url);
echo $headers[0].'<br>';
}
有时这会给出 10 个 HTTP/1.1 200 OK 而其他时候最后 5 个是 HTTP/1.1 500 Internal Server Error
有没有办法解决这个问题?如果你访问 625 之后的页面并刷新,你会得到一个以500 Internal Server Error nginx 开头的页面,或者有时你会得到一个以Piston/0.2.2 (Django 1.4.4) crash report: 开头的页面。
知道如何检查发生这种情况时是否存在(有效的非崩溃)页面吗?
【问题讨论】:
-
get_headers不是不可靠,你点击的网站是。 -
我刚刚尝试使用 i=625 访问上述站点并收到 500 错误。好像是服务器端的问题。
-
@jordanm 措辞选择不当,但你知道我的意思。我不能相信它会按原样工作。
-
定义“如果 URL 存在”。你可以形成它——所以在这个意义上它存在——但服务器没有提供有效的响应。我认为这意味着“此时服务器无法找到使用您的统一资源定位器请求的资源”。我会称之为“该 URL 不存在”。
-
我建议您使用
get_headers()来获取站点的标题并测试HTTP 状态代码是否可以接受(200是OK,301表示永久移动,有一个完整的列表维基百科)。如果服务器有无法解决的问题,它会发送500状态;401表示该资源不存在。哦等等,你已经想通了。有什么问题?
标签: php mysql http-headers