PHP - 设置file_get_contents超时

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以及下面的警告消息.

连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应.