file_get_contents导致站点在远程站点关闭时关闭

时间:2015-07-10 08:34:45

标签: php geolocation

我有一个网站使用file_get_contents来访问每个请求的地理位置API。这个远程API有时会开始出现504/502错误,可能是由于问题结束。问题是这会导致我的网站也出现故障 - 有没有办法创建一个后备,这样如果远程站点开始超时,它会忽略它并加载页面呢?

这是我的代码:

$geoData = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $_SERVER['REMOTE_ADDR']));

2 个答案:

答案 0 :(得分:0)

@$geoData = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $_SERVER['REMOTE_ADDR']));

这将忽略该行抛出的任何错误,并继续。

请记住,您必须检查$ geoData是否存在:

if($geoData){ // code }

答案 1 :(得分:0)

我明白,这个答案可能不受欢迎,但我们走了:

每个请求上调用地理位置API根本不是一个好主意。这只不过是浪费资源 - 我认为在会话期间将IP的geoinfo视为常量是完全可以接受的。

我的建议是将geoinfo存储在会话中,并异步填充它 - 如果你不可能在服务器上使用异步PHP,请使用AJAX调用,并使用客户端错误处理程序"重试并忽略"。

如果您没有会话基础结构,则可以使用本地缓存表,该表再次异步填充并具有某种到期机制。

这样,每当geoinfo网站消失时,您的应用就会保持正常状态,而不会使用geoinfo组件。