2014-12-06 44 views
1

我有一个网站,我需要确定用户的位置,所以我使用webservice,它为我提供了有关我的用户(使用他的IP地址)的详细信息。检查file_get_contents网址是否正常工作

我的功能看起来是这样的:

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

今天早上这个Web服务有问题(500错误,过多的连接,坏网关...)和我的网站被加载很长的时间。

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

+0

我认为你应该使用卷曲,而不是file_get_contents()函数 – Khushboo 2014-12-06 12:52:47

回答

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