PHP - 设置file_get_contents超时

时间:2014-03-30 09:09:39

标签: php arrays function http-headers file-get-contents

我正在使用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
}

除非页面响应时间过长,否则此操作正常。

如何设置超时?

如果尚未完成,file_get_headers将返回 FALSE ,如果尚未完成file_get_contents请求,PHP会移至下一行吗?

2 个答案:

答案 0 :(得分:12)

以下是如何为此功能设置超时的示例:

<?php
$ctx = stream_context_create(array(
    'http' => array(
        'timeout' => 1
        )
    )
);
file_get_contents("http://example.com/", 0, $ctx);
?>

答案 1 :(得分:10)

timeout

中添加stream_context_array密钥
$Context = stream_context_create(array(
'http' => array(
    'method' => 'GET',
    'timeout' => 30, //<---- Here (That is in seconds)
)
));

你的问题....

  

如果file_get_headers尚未完成,则返回FALSE   如果没有完成,PHP将移动到下一行   file_get_contents请求?

,它将返回FALSE以及下面显示的警告消息。

  

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