Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50
1
MySQL

Проверка актуальности данных в БД на стороне клиента

20.01.2019, 20:16. Показов 735. Ответов 3

!!!ОсторожноМногоБукв!!!
Всем привет. Ситуация такая: есть БД, допустим в ней есть таблица "Test" с n-ым кол-вом столбцов и строк в них.
Так же есть web страница, на которой существует таблица, в которую при загрузке страницы подгружается вся инфа из БД.

И так на нашей странице с таблицей за разными ПК работают всеми любимые Пупа и Лупа. Пупа зашёл на страницу, посмотрел информацию в таблице и пошёл наливать кофе. В свою очередь Лупа зашёл туда же, но в место того чтобы пойти наливать чай, он изменил данные в таблице во второй стоке, удалил четвёртую и пятую и хваля себя вышел со страницы.
Напившись кофе, Пупа подумал, что надо бы поработать. Он сел за стол и увидел, что начальство просит его распечатать отчёт по данным в таблице. Но из-за Лупы то есть из-за того, что у Пупы страница уже была ранее загружена и он не обновил её , данные в таблице остались неактуальны (неверные) и отчёт у Пупы получился неверным.

Так вот, к чему я всё это. Как избежать данного рода ситуации, ведь при работе с информацией большого кол-ва человек проблема с неактуальностью данных должна быть довольно популярная и её решений должно быть множество, но у меня найти его не вышло.

Есть пару идей но мне бы, что нибудь действенное и оптимальное.

Вариант 1: Изобрести костыль, который будет взаимодействовать с логом вида
XML
1
<user login='Лупа' tableName='Test' time='h:mm:ss' action='delete'> Удалил данные такие-то </user>
и после любого действия пользователя проверять, были ли совершены какие либо действия за определённый промежуток времени в этой таблице, если да то обновляем таблицу. Ну это такой себе вариант если честно.

Вариант 2: Это использовать что-то из функций Ajax и jQuery или тот же Prototype для проверки данных на сервере с данными у клиента и выполнения манипуляций с ними. Но какие функции точно использовать не знаю.

Вариант 3: Сделать таймер по истечению которого будут считываться данные с сервера и переноситься на клиентскую сторону без обновления страницы. У Prototype, jQuery есть такая возможность, но вопрос в другом, как это грамотно реализовать, чтобы работая с большими объёмами данных сервер попросту не лёг. Думаю что можно посмотреть в сторону многопоточности

Вариант 4: Я точно не уверен, но думаю что у DataTables тоже есть способы справиться с этим.

Собственно я свои идеи изложил и жду вашей помощи и идей, как решить проблему с неактуальностью данных на стороне клиента.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2019, 20:16
Ответы с готовыми решениями:

Проверка введенных в форму данных на стороне клиента
Всем привет! У меня примитивный вопрос, но ответ хотелосьбы услышать. в общем, следующее. Я хочу...

Поддержка актуальности данных в таблица на стороне клиентов
Задача: С БД работает несколько операторов. Необходимо поддерживать актуальность данных в...

Паника. Проверка даных на стороне клиента
Доброго времени суток уважаемые форумчане. То ли я чего-то не понимаю, то ли все не так хорошо....

Проверка правильности заполнения формы на стороне клиента
Здравствуйте помогите написать код и вставить его в эту форму для проверки правильности заполнения...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
3
572 / 510 / 252
Регистрация: 26.09.2010
Сообщений: 2,572
20.01.2019, 22:56 2
Natanchik, при распечатке данных создавать PDF и туда грузить актуальные данные из БД, ну а на странице можно используя AJAX через определенное время перезагружать данные.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50
20.01.2019, 23:54  [ТС] 3
Виталюска, мне не обязательно при распечатке, мне надо просто решить проблему с тем, что пользователь может пытаться выполнять действия с данными, который другой пользователь уже удалил или изменил и тд.
Если я буду перезагружать данные раз в 30-60 секунд у 10+ людей, это же довольно большая нагрузка будет на сервер не так-ли? И раз уж на то пошло, не могли бы вы скинуть мне какой нибудь пример или саму функцию?
0
572 / 510 / 252
Регистрация: 26.09.2010
Сообщений: 2,572
24.01.2019, 13:39 4
Цитата Сообщение от Natanchik Посмотреть сообщение
Если я буду перезагружать данные раз в 30-60 секунд у 10+ людей, это же довольно большая нагрузка будет на сервер не так-ли?
Смотря сколько информации хранится в БД, если у Вас в БД например +100500 записей, то зачем грузить их все? а если делать какие то изменения с данными надо проверить есть ли они в БД и загружать актуальные данные из БД для работы с ними, а не те что Вы видите на странице. Например нажимаем на кнопку изменить -> делаем запрос на извлечение данных по ид -> выводим форму для изменения.
если удаление -> то проверяем есть ли запись в БД, если есть удаляем, а если нет то выводим сообщение что запись уже удалена

ну а для перезагрузки страницы используйте стандартные JS функции, если без перезагрузки то AJAX, но думаю это не лучший вариант с перезагрузкой данных, так как при работе будет мешать постоянное мелькание
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2019, 13:39

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Почему не работает проверка перед отправкой? На стороне клиента
Добрый день! Подскажите пожалуйста, почему не работает проверка, заполнено поле или нет перед...

Проверка формы на стороне клиента с использованием Parsley.js с PHP Ajax
Добрый вечер Проверка формы на стороне клиента с использованием Parsley.js с PHP Ajax Можете...

Хранение данных на стороне клиента. LocalStorage
Друзья, подскажите, что не так в моем коде? Захожу на страницу, а изменяет только цвет текста....

Выгрузка данных в Excel на стороне клиента
Здравствуйте. Подскажите пожалуйста как выгружать данные из бд в excel таким образом, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.