检查file_get_contents url是否正常工作

时间:2014-12-06 12:45:20

标签: php json ip file-get-contents

我有一个网站,我需要确定用户的位置,所以我使用webservice,它提供了有关我的用户的详细信息(使用他的IP地址)。

我的功能如下:

$user_ip = $_SERVER['REMOTE_ADDR'];
$json_url = 'http://example.com/'.$user_ip;
$json = file_get_contents($json_url);
$obj = json_decode($json);

今天早上这个网络服务有问题(500个错误,连接太多,网关不好......)我的网站加载时间很长。

所以我有一个问题:是否可以为file_get_contens函数设置超时?或者也许有办法让服务器无法正常运行?

1 个答案:

答案 0 :(得分:1)

您可以设置timeout上下文的http选项:

$opts = array('http' =>
    array(
        'timeout' => 5
    )
);

$result = file_get_contents($url, false, stream_context_create($opts));

检查以下文档:


另一种方法是通过ini_set()设置默认套接字超时:

$st = ini_get("default_socket_timeout"); // backup current value
ini_set("default_socket_timeout", 5000); // 5 seconds

$content = file_get_contents($url);
if($content === false) {
    // error handling
}

ini_set("default_socket_timeout", $st); // restore previous value