1
raincious 2016-11-14 13:16:32 +08:00 1
|
2
hanzichi 2016-11-14 13:17:45 +08:00 1
用 curl ?坐等老司机
|
4
hanzichi 2016-11-14 13:18:45 +08:00
以前写过简单的 demo https://github.com/hanzichi/php-study/blob/master/cURL/basic.php FYI
|
5
Herobs 2016-11-14 13:19:19 +08:00 1
首先查看该函数的文档 http://php.net/manual/zh/function.file-get-contents.php
如果发现不能满足需求,就可以考虑 [curl]( http://php.net/manual/zh/book.curl.php)。 |
6
wesley 2016-11-14 13:23:44 +08:00
给你一个笨办法,先用 get_headers 获取状态码
|
7
langmoe 2016-11-14 13:32:17 +08:00
|
8
qcloud OP |
10
raincious 2016-11-14 20:08:05 +08:00 1
@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 )。 |