@
qcloud 客气,但要注意,上面的解决方案只是针对你使用 file_get_contents 而言的。原理是获得 HTTP 的反回头,然后进行字符串检查。
这里有个投机取巧的地方是 HTTP 协议规定服务器的第一行返回必须是状态码,格式是:
HTTP/版本 版本 说明
而第一行返回必定是 $http_response_header 这个数组的第 0 个项,所以我上面回答中的代码才能工作。
你新写的代码需要执行 empty 检查来判断 $http_response_header 是否已经被设定并且不为空,否则如果 file_get_contents 失败了,你后续的代码会报 Notice 指出 Undefined Index 。
如果你想要严格的检查 Status code ,建议使用一个更高级的 API ,这样你就不用像上面一样自己去“解析”状态码了。比如上面很多人建议的 CURL ,这里直接有例子代码:
http://php.net/manual/en/function.curl-getinfo.php#refsect1-function.curl-getinfo-examples你可以参考 @
hanzichi 写的代码来整合这些东西(其实就是加一行 curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200 )。