Каков наилучший способ получить выходные данные скрипта на другом сервере?

У меня есть Nominatim (с открытыми картами улиц), установленный на сервере.

На другом сервере у меня есть база данных с несколькими столбцами, 3 из которых - широта (широта), долгота (долгота) и адрес. Столбцы lat и lon заполнены координатами, а для третьего столбца я написал скрипт на PHP, который запрашивает Nominatim (на другом сервере), чтобы получить адрес для координат, и обновляет базу данных при запуске. На данный момент скрипт использует cUrl (создает URL как .../reverse.php?lat=XX&lon=YY), получает выходные данные (XML) и обновляет базу данных.

Проблема в том, что для 1000 координат это занимает около 16 секунд. Скрипт запускает 8 потоков cUrl все время, пока не будет завершена вся выборка. Я обнаружил, что 8 потоков лучше, потому что сервер имеет 8-ядерный процессор.

Мне было интересно, есть ли лучшее решение, чтобы получить адрес быстрее. Я думал о запуске exec через ssh или даже об экспорте базы данных на сервер nominatim и запуске exec там.

Перед тем, как начать писать код, я хотел получить мнение, чтобы не писать несколько сотен строк кода, чтобы получить худший результат.

1 ответ

Решение

Мне удалось сократить время до 4 секунд, переместив скрипт на сервер Nominatim и используя execs для запуска 8 скриптов, каждый из которых обрабатывал 1/8 данных.

Другие вопросы по тегам