0

第一次来这里,所以我会尽量准确和详细。每天计算和存储大量驾驶距离(PHP JavaScript)

我正在开发一个项目,用户可以通过驾驶距离来排序当地景点。起点将是他们的家庭住址,终点将是数据库中存储的(许多)景点之一:湖泊,公园,商店,博物馆等。

注册用户需要指定他/她的地址,并且该站点将运行服务器端脚本,该脚本将缓慢查找该地址与存储的景点之间的距离。

1)新用户登记到网站

2)新的吸引力被添加到数据库

时的行驶距离计算自动触发

比方说,我有400个景点和1500个用户。如果我添加一个新的吸引力,该网站将获取距离1500次(每个用户)。如果我添加一个新用户,该网站将执行相同的工作400次(每个景点一个)。

我目前正在使用Goolge API,他们很不错。唯一的问题是...我每天最多有2500个查询。因此,如果我添加2个新景点(,将需要总共3000个距离),我被锁定,直到第二天。

在一个更大的场景中,驾驶距离可能会很长。如果我有5000个注册用户,每当我添加一个新景点时,我必须获取5000个距离。这将需要2天。

什么可能是更好的方法?我也在评估Google Business API(每年10.000美元),但这只适用于巨大的现实情况,而且现金广告的处置也很好。

回答

0

为什么你想从服务器端做到这一点?方向请求计入IP地址(每IP每天2500个查询),所以每当访问者访问该站点时,您都​​可以在后台执行少量请求,并且他们将计入访问者的IP,而不是服务器的IP。你只需要对AJAX很好。 ;-)

+0

这不适用于景点> 2500. – Bytemain

+0

无论如何,请求将来自服务器,所以在我打开免费的2500每天我出: | – Loque

+0

@ Skidrow @Loque,你没有看到我的答案。每天2500次点击**每个IP **。你一次只能做一小撮。 – Marcelo

0

改为使用直线。不要使用行驶距离。或者将它们存储在数据库中并使用空间索引。

+0

不幸的是,从A到B的直线在这种情况下完全不起作用,因为它会完全忽略障碍物(_rivers,sea,mountains等)......从而导致显示准确的行驶距离。 – Loque

+0

那么,你可以将它们存储在数据库中,但是如此多的驾驶距离,你应该付出一定的代价。你也应该考虑如何在屏幕上显示路线和在现实生活中路线之间做出区别? – Bytemain

+0

是的,我存储每一个获取的距离,以避免在每次访问时敲击谷歌。所以我基本上使用API​​来获取A-> B的距离,当我添加一条新记录时,它将被保存在数据库中。这里的问题是当我有很多需要多个API调用的用户(_or attractions_)时(如果每天超过2500),如何进行优化。 – Loque