busidoway
@busidoway

Как получать данные json для Яндекс Карты при автоматическом обновлении?

Добрый день.
На главной странице выбирается несколько пунктов (локаций) и при переходе на страницу panel.php передается туда массив (1,2,3,5,10) из этих локаций. В panel.php размещен скрипт карты Яндекс. Пример:

var myMap,
			geoObjects,
			objectManager,
			arr_id = '".$arr_id."',
			arrp = JSON.parse('[' + arr_id + ']');
			
		ymaps.ready(init);
		function init()
		{
			myMap = new ymaps.Map('map', {
					center: [".$last_gps."],
					zoom: 14,
					type: 'yandex#satellite'
				}, {
					searchControlProvider: 'yandex#search'
					
				});
				objectManager = new ymaps.ObjectManager({
					clusterize: true,
					gridSize: 32,
					clusterDisableClickZoom: true
				});
				objectManager.objects.options.set('preset', 'islands#grayDotIcon');
				objectManager.clusters.options.set('preset', 'islands#grayClusterIcons');
				myMap.geoObjects.add(objectManager);
	
				$.ajax({
					url:'panel_json.php',
					type: 'post',
					dataType: 'json',
					data: {arrp:arrp}
				}).done(function(data) {
					objectManager.add(data);
				});
				
				myMap.geoObjects.add(objectManager);
				
		};


Через ajax передается массив id в panel_json.php, где по этому массиву идет запрос к БД, после чего формируется шаблон в формате json и возвращается в panel.php.

Суть в том, что каждые 5 секунд данные на карте обновляются через setInterval(). Если получать данные для карты из panel_json.php, то данные возвращаются долго - примерно 1-2 сек. Если получать данные из json-файла
url:'json/data.json'
, то работает намного быстрее ~5-10 ms. Но проблема в том, каким образом сохранять и получать файл json? Т.е. допустим, на сайт пришли несколько пользователей и каждый выбрал какие-то локации для отображения. Получается, в каждом случае будет передаваться какой-то отдельный массив с различными id, и для каждого нужно будет формировать отдельный набор json и сохранять в какой-то отдельный файл. Итого, большая куча сгенерированных файлов на серваке.

Может, кто-то сталкивался с подобным? Быть может, есть еще какие-то решения.
  • Вопрос задан
  • 1145 просмотров
Решения вопроса 1
busidoway
@busidoway Автор вопроса
Проблема была в подключении к базе + неоптимизированный запрос sql. В подключении к базе вместо "localhost" указал IP-адрес сервера (только на подключение уходило ~1 сек времени), и разбил запрос к базе для вывода записей на два отдельных запроса. В итоге, время загрузки страницы упало до ~10-20 ms.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы