У меня около 100 устройств GPS, периодически отправляющих координаты каждые 10 секунд. Мой клиент хочет обратное геокодирование в реальном времени, чтобы увидеть его транспортные средства вместе с местоположением на табличном виде. Я установил очередь для сохранения всех этих пакетов в db до того, где я добавил геокодирование script, как показано ниже
-
Получение IP-сообщения TCP с помощью websocket
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, ) )));
}
-
Запуск очереди
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 параллельных устройств, если я включу это геокодирование в очередь, есть ли для этого лучший подход?