gpt4 book ai didi

php - 使用 laravel 队列即时进行谷歌地理编码

转载 作者:IT王子 更新时间:2023-10-29 00:06:12 26 4
gpt4 key购买 nike

我有大约 100 个 GPS 设备每 10 秒定期发送坐标。我的客户想要实时反向地理编码来查看他的车辆以及表格 View 中的位置。在我添加如下地理编码脚本之前,我已经设置了一个队列来将所有这些数据包保存在数据库中

  1. 使用 websocket 接收 TCP IP 消息

    public function onMessage(ConnectionInterface $conn, $msg) {
    //get the message
    // send the dispatch job to save it in db
    $this->dispatch(new SavePacketsToDb($key_1, json_encode(
    array(
    'company_id' => $key_1,
    'vehicle_id' => $company->vehicle_id,
    'tracker_id' => $company->tracker_id,
    'lat' => $lat,
    'lng' => $lng,
    'imei' => $imei,
    'datetime' => $datetime,
    )
    )));

  2. 运行队列

    public function handle(){
    $lat=$obj->lat;
    $lng=$obj->lng;



    $url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" . $lat . "," . $lng . "&key=mykey";
    $json = file_get_contents($url);
    $data = json_decode($json);
    $status = $data->status;
    $address = '';
    if ($status == "OK") {
    // echo "from geocode address";
    echo $address = $data->results[0]->formatted_address;
    }
    else{
    $address=NULL;
    }

    //save to db
    }

我只是担心如果我在队列中包含此地理编码它是否适用于 1000 个并发设备,是否有更好的方法?

最佳答案

我们开发了类似的东西,最初是使用 google maps api,但我搬走了,因为它在我的位置(巴西)不太准确。

对于谷歌地图,如果您没有注意到任何准确性问题,您可以排队并处理数据,但每天的数量有限(注意我相信的 2500 次查询限制)以获得免费服务或购买所需的查询。

如果您需要所有设备的实时,您将需要为谷歌地图中的更大容量付费,我会为此使用排队服务。我们正在使用 RabbitMQ 队列接收坐标,然后我们有小型客户端/工作人员从队列中获取项目并处理它们(涉及其他 API)。

我不相信您的客户会整天坐在屏幕前,所以也许您可以:

  • 始终存储坐标
  • 仅当他/她/某人在该页面时才运行 API 调用
  • 在屏幕的查看区域(查看的 map 边界在前面)使用 GPS 坐标优先系统
  • 在尽力而为窗口上运行低优先级坐标(基于 API 可用性、使用限制等),甚至可能在非优先级的辅助 API 上运行

顺便说一下,我们正在使用 HereMaps,它是付费的,但您可以创建一个为期 3 个月的模拟/测试帐户。

关于php - 使用 laravel 队列即时进行谷歌地理编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43243767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com