Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверять нет ли изменений в БД? (https://javascript.ru/forum/misc/70584-kak-proveryat-net-li-izmenenijj-v-bd.html)

arkadii_parovozov 17.09.2017 15:53

Как проверять нет ли изменений в БД?
 
Здравствуйте друзья!

На странице вывожу информацию из базы данных. Но в БД могут произойти изменения, и их (обновленные данные) нужно сразу-же вывести на страницу. Делаю таким образом:
var timer_id = setTimeout(function timer_load() {
$.post( 'ajax.php', {'new_value': 'a'}, function(data){
var arr_value = data.split(',');
		
		$("#echo1").html(arr_value[1]);
		$("#echo2").val(arr_value[2]);
		$("#rangeP").val(arr_value[3]);
		.........

	});
setTimeout(timer_load, 20);
}, 20);

Так-же на странице есть "бегунок"
<input type="range" oninput="onchangeRange()" class='rangeP' id="rangeP" value="0" min="0" max="255" step="1" />

и отлавливаю события по изменению значения:
function onchangeRange() {
	clearTimeout(timer_id);
	$.post( 'ajax.php', {'new_value': $("#rangeP").val()}, function(data){});
}

данные бегунка тоже записываю в БД. Но проблема в том что когда я двигаю бегунок, то он постоянно скачет и после того как я его отпускаю, то он возвращается на прежнею позицию и медленно перебирается на позицию где он был отпущен.

Тоже самое происходит и с другими элементами когда я хочу их отредактировать. Даже не всегда срабатывает нажатие кнопки. Я так понимаю что это происходит из за постоянных запросов к БД, и перезаписи всех значений на странице.

Может кто-то решал уже подобные задачи, подскажите как сделать так чтобы данные обновлялись с минимальной задержкой, и при этом, чтобы можно было нормально редактировать данные на странице?

laimas 17.09.2017 17:23

oninput="onchangeRange()"

onchangeRange() ... $.post

Завалить сервер охота?

arkadii_parovozov 17.09.2017 17:35

setTimeout(timer_load, 20) - гораздо большее зло чем onchangeRange()
Поэтому я и обратился на этот форум, потому что не знаю каким образом реализовать вышеописанный алгоритм, чтобы не "завалить сервер" и не глючила вэб-страница. Мне нужно отслеживать БД в реальном времени (+/- 0.1 сек), при этом, также в реальном времени записывать данные в БД если на странице что-то изменилось.

laimas 17.09.2017 19:28

Цитата:

Сообщение от arkadii_parovozov
setTimeout(timer_load, 20) - гораздо большее зло

Если при каждом малейшем изменении и без задержки запрашивать сервер, то вы его таки завалите. Но коли задержка, то передаваться на сервер будет текущее состояние слайдера. И пака нет ответа от прежнего запроса никаких новых.


Часовой пояс GMT +3, время: 21:41.