【问题标题】:Check if file_get_contents url is working检查 file_get_contents url 是否有效
【发布时间】:2014-12-06 12:45:20
【问题描述】:

我有一个网站,我需要确定用户的位置,所以我使用网络服务,它为我提供有关我的用户的详细信息(使用他的 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 函数设置超时?或者也许有一种方法可以让服务器无法正常工作?

【问题讨论】:

  • 我认为你应该使用 curl 而不是 file_get_contents()

标签: php json ip file-get-contents


【解决方案1】:

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

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2010-12-20
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多