Вычисление и хранение большого количества расстояний езды каждый день (PHP JavaScript)
Здесь впервые, поэтому я постараюсь быть точным и подробным.
Я работаю над проектом, где пользователи смогут сортировать местные достопримечательности по расстоянию езды. Начальной точкой будет их домашний адрес, конечной точкой будет одна из (многих) достопримечательностей, хранящихся в базе данных: озеро, парк, магазин, музей и так далее.
Зарегистрированный пользователь должен указать свой адрес, и сайт будет запускать серверный скрипт, который будет медленно находить расстояния между этим адресом и сохраненными достопримечательностями.
Расчет пробега автоматически срабатывает, когда:
1) новый пользователь регистрируется на сайте
или же
2) добавлен новый аттракцион в базу данных
Допустим, у меня 400 аттракционов и 1500 пользователей. Если я добавлю новый аттракцион, сайт получит расстояние 1500 раз (поодному на пользователя). И если я добавлю нового пользователя, веб-сайт будет выполнять ту же работу 400 раз (поодному на аттракцион).
В настоящее время я работаю с API Goolge, и они довольно хороши. Единственная проблема... у меня максимум 2500 запросов в день. Поэтому, если я добавлю 2 новых аттракциона (дляэтого потребуется всего 3000 дистанций), я буду заблокирован до следующего дня.
В большем сценарии, расстояния пробега могут быть довольно длинными, чтобы извлечь. Если у меня есть 5000 зарегистрированных пользователей, всякий раз, когда я добавляю новый аттракцион, я должен получить 5000 расстояний. Это займет 2 дня.
Что может быть лучше? Я тоже оценивал Google Business API (10.000$/ год), но это работало бы только для огромных реалий, с хорошей наличностью и их распоряжением.
2 ответа
Почему вы хотите сделать это со стороны сервера? Запросы по направлениям учитываются по IP-адресу (2500 запросов в день на IP-адрес), поэтому вы можете выполнять лишь несколько запросов в фоновом режиме каждый раз, когда посетитель заходит на сайт, и они будут учитываться по IP-адресу посетителя, а не по серверу. Вам просто нужно быть хорошо с AJAX.;-)
Вместо этого используйте прямую линию. Не используйте пробега. Или сохраните их в базе данных и используйте пространственный индекс.