Xpe*_*lay 11 php arrays function file-get-contents http-headers
我file_get_contents用来获取外部页面的标题,以确定外部页面是否在线,如下所示:
$URL = "http://page.location/";
$Context = stream_context_create(array(
'http' => array(
'method' => 'GET',
)
));
file_get_contents($URL, false, $Context);
$ResponseHeaders = $http_response_header;
$header = substr($ResponseHeaders[0], 9, 3);
if($header[0] == "5" || $header[0] == "4"){
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
除非页面花费太长时间才能响应,否则这种方法很有效.
如何设置超时?
将file_get_headers返回FALSE,如果还没有完成,将PHP移到下一行,如果还没有完成的file_get_contents请求?
Abe*_*awa 12
以下是如何为此函数设置超时的示例:
<?php
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 1
)
)
);
file_get_contents("http://example.com/", 0, $ctx);
?>
Run Code Online (Sandbox Code Playgroud)
Sha*_*ran 10
timeout在里面添加一个键stream_context_array
$Context = stream_context_create(array(
'http' => array(
'method' => 'GET',
'timeout' => 30, //<---- Here (That is in seconds)
)
));
Run Code Online (Sandbox Code Playgroud)
如果file_get_headers尚未完成,它将返回FALSE,如果尚未完成file_get_contents请求,PHP将移至下一行吗?
是的,如下所示,它将返回FALSE以及下面的警告消息.
连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应.