Mam około 100 urządzeń GPS wysyłających współrzędne co 10 sekund. Mój klient chce w czasie rzeczywistym dokonać geokodowania wstecznego, aby zobaczyć swoje pojazdy wraz z lokalizacją w widoku tabelarycznym. Mam ustawić kolejkę, aby zapisać wszystkie te pakiety w dB przed którym Dodałem skrypt geokodowania jak poniżejGoogle geokodowanie w locie za pomocą kolejki laravel
Odbierz wiadomość TCP IP za pomocą 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, ) )));
}
uruchomić kolejka
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 }
Martwię się tylko, czy działa na 1000 urządzeń współbieżnych, jeśli uwzględnię to geokodowanie w kolejce, czy jest na to jakieś lepsze podejście?
Myślę, że możesz ograniczyć liczbę współbieżnych procesów poprzez ustawienie konfiguracyjne administratora 'numprocs = 8'.Nie jestem do końca pewien, czy tego właśnie szukasz. – btl
Widzę na kilka sposobów, abyś mógł to poprawić przynajmniej, ale żeby dać ci kilka wskazówek: 1) możesz sprawdzić, czy praca jest wciąż (czeka) w kolejce do pojazdu i pozbyć się wszelkich oczekujących zleceń dla pojazd, gdy umieszczasz nową pracę w kolejce 2) prawdopodobnie nie chcesz wykonywać połączenia z Google api za każdym razem. Na przykład rozważ, czy współrzędne są takie same, ponieważ w takim przypadku pojazd się nie poruszył i znasz już lokalizację. – Leentje
Po namyśle; Zrobiłbym tylko wywołanie API do google, gdy frontend musi pokazać rzeczywistą lokalizację. (I po prostu zapisz współrzędne) – Leentje