Php 如何将位置数据实时发送到服务器?我做对了吗?

Php 如何将位置数据实时发送到服务器?我做对了吗?,php,android,server,location,Php,Android,Server,Location,我需要制作一个系统,android应用程序将用户的位置实时发送到服务器。然后在网站上(在同一台服务器上),您将能够观察用户(使用应用程序)的旅行方式。就像你可以从优步餐厅跟踪食品供应商一样 这个项目目前已经完成,并且运行得很好,但是我不相信我做得是否正确 现在,android应用程序每1秒读取一次用户的位置,并使用POST方法将其发送到服务器。例如:mydomain.com/gps.php?usertoken=XXX&纬度=XXX&经度=XXX。每当php文件获取此数据时,它都会将其保存在MyS

我需要制作一个系统,android应用程序将用户的位置实时发送到服务器。然后在网站上(在同一台服务器上),您将能够观察用户(使用应用程序)的旅行方式。就像你可以从优步餐厅跟踪食品供应商一样

这个项目目前已经完成,并且运行得很好,但是我不相信我做得是否正确

现在,android应用程序每1秒读取一次用户的位置,并使用POST方法将其发送到服务器。例如:mydomain.com/gps.php?usertoken=XXX&纬度=XXX&经度=XXX。每当php文件获取此数据时,它都会将其保存在MySQL数据库中。就这些

现在,访问站点的用户可以在地图上看到用户使用应用程序的位置(数据库中的位置)

这是正确的解决方案吗?我应该不使用其他方法吗?将来可能会有几十个用户,这样的系统会有效率吗?我恳请你给我一些建议。我是一个初学者程序员

android应用程序的gps.php文件中的代码:

$lat = $_POST['latitude'];
$long = $_POST['longitude'];
$login = $_POST['usertoken'];

//save location to database
$db = mysqli_connect('localhost', 'xxxx', 'xxxx', 'xxxx');
$db->query("UPDATE users SET latitude='$lat', longitude='$long' WHERE login='$login'");
$db->close();

WebSocket可能是您的解决方案。它们允许您在服务器和客户端之间建立双向连接。非常适合具有大量“流量”的应用程序 由于它将产生较小的开销而导致。对于应用程序来说,将数据从服务器推送到客户机的能力也是相当不错的,因为它允许您随时更新客户机 服务器上发生了一些问题

对于客户端和服务器来说,这是一个非常整洁的库。对于MySQL部分,可以使用node.js及其MySQL包

我认为,您的rest api(http)网络调用没有错。在大多数情况下,这是一个正确的解决方案

但我认为您需要在php代理服务器中保持数据库连接。

因为服务器通常总是在运行


在每个查询中重新连接到数据库是一项昂贵的工作。

您应该使用ajax和
set interval()
websockets
来解决这个问题。使用ajax很好,1秒更新是多余的,除非您需要每秒更新服务器端,而大多数情况下您不需要(对android不太清楚,但在chrome中,如果每分钟重新查询一次以上,它会抱怨),php代码对SQL注入非常开放,这是在添加实时更新之前需要解决的一个更大问题。