我有一个网站,我需要确定用户的位置,所以我使用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函数设置超时?或者也许有办法让服务器无法正常运行?
答案 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