Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Обновление в режиме реального времени
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Обновление в режиме реального времени

Страниц (2): [1] 2 »
 

1. Serpanok - 06 Октября, 2011 - 00:19:45 - перейти к сообщению
Всем привет!

Помогите решить эту задачку. Сам не очень-то и догадуюсь как)))

Есть:
1. Страница на которой большая таблица(первоначально загружен массив ajax`ом и преобразован в таблицу).
2. Каждый тег td в таблице имеет параметры ctype(типо указывает на столбец) и bid(указывает на строку в бд и строку в таблице)
3. На странице каждые 5 секунд отпровляется ajax запрос
4. Страниц может быть открыто несколько у одного пользователя
5. Страницой могут пользоваться сразу несколько человек с разных ПК
7. Любой пользователь может кликнув на td изменить его значение в БД

Нужно:
1. Чтобы, если какой либо пользователь меняет значение какого то td, оно менялось на всех страницах у всех пользователей(в режиме реального времени (+-5сек.) )

Перезагружать все данные не вариант!

Мне кажется нужно какуюто табличку в БД создать с последними изменениями и оттуда брать ctype,bid и значение

Но может есть вариант по прощё?

Заранее спс! Жду ответов... С меня +
2. OrmaJever - 06 Октября, 2011 - 00:31:50 - перейти к сообщению
вобще для таких дел есть хорошая штука websockets, но не знаю какие браузеры его подерживают. Сам не работал с ним но если нужно то можно и разобратся Улыбка
3. Serpanok - 06 Октября, 2011 - 00:32:43 - перейти к сообщению
у меня все работают с firefox)) сейчас посмотрю что это))
(Добавление)
поддерживают

Google Chrome (начиная с версии 4.0.249.0);
Apple Safari (начиная с версии 5.0.7533.16);
Mozilla Firefox (начиная с версии 4);
Opera (начиная с версии 10.70 9067);

но разбираться походу много)))
4. DeepVarvar - 06 Октября, 2011 - 08:57:07 - перейти к сообщению
json.
Отправляете от пользователя обновившего данные координаты и новое значение.
На то существуют long polling.
Публикуете данные в канал. Остальные принимают, получают кооринаты и значение.

Serpanok пишет:
Страниц может быть открыто несколько у одного пользователя

Учтите - браузер поддерживает не более двух одновременных асинхронных подключений.

Serpanok - подписались на эксклюзив...
5. illy - 06 Октября, 2011 - 09:07:58 - перейти к сообщению
это как чат. каждые 5 сек обновляются сообщения.
а тут указывается в какую ячейку это новое поместить
6. DeepVarvar - 06 Октября, 2011 - 09:12:26 - перейти к сообщению
illy спасибо КЭП - без вас не было понятно
7. illy - 06 Октября, 2011 - 09:36:23 - перейти к сообщению
DeepVarvar пишет:
illy спасибо КЭП - без вас не было понятно

Всегда стараюсь объяснить по проще Хорошо
8. DeepVarvar - 06 Октября, 2011 - 09:58:14 - перейти к сообщению
illy пишет:
по проще

поп роще Радость
9. Stierus - 06 Октября, 2011 - 11:11:39 - перейти к сообщению
Цитата:
Но может есть вариант по прощё?
если в бд строк не очень много - можете ввести доп. поле - время последнего изменения. Ну а каждые 5 секунд отдавать только те строки, время изменения которых было больше времени отдачи прошлой порции данных. Интерсно, как вы обходите кейсы, когда 2 человека редактируют одну и ту же ячейку в таблице. Вот парень сидит, корпит, правит ее уже минут 10, второй параллельно делает то же самое и сохраняет результат. Через 5 секунд первому парню аджаксом приходит сообщение об изменении того поля - оно меняется без спроса, затирая все, над чем он корпел или что происходит?
10. DeepVarvar - 06 Октября, 2011 - 11:48:51 - перейти к сообщению
Stierus пишет:
затирая все, над чем он корпел
Точна точна!!! Ниндзя
11. illy - 06 Октября, 2011 - 13:05:16 - перейти к сообщению
Значит надо делать блокировку данных на время работы
12. SAD - 06 Октября, 2011 - 14:40:08 - перейти к сообщению
я вот одного не пойму: почему несколько человек могут редактировать одни и те же данные. должно быть какое то разграничение
(Добавление)
а еще круче будет так.
я сижу, правлю данные, отправляю запрос на редактирование. но перед этим скрипт тянет последние изменения за минут 20 например по полю lastdate, и говорит юзверю: тратата, были изменения и показать произошедшие изменения. и спрашивать потом: вы действительно хотите перезаписать то что есть?
13. Serpanok - 06 Октября, 2011 - 15:02:51 - перейти к сообщению
SAD пишет:
я вот одного не пойму: почему несколько человек могут редактировать одни и те же данные. должно быть какое то разграничение


это бд предприятия, и изменения тут проходят не очень часто на всё же, вряд ли будут два человека работать над одной ячейкой
14. DeepVarvar - 06 Октября, 2011 - 15:08:11 - перейти к сообщению
Лочить, однозначно лочить. И выводить тому кто пришел позже:
"Звиняй друган - занято! Приходи минут через пять. Бумажка есть?"
15. Serpanok - 06 Октября, 2011 - 15:09:50 - перейти к сообщению
DeepVarvar пишет:
"Звиняй друган - занято!"

нее, не в коем случае)))

 

Powered by ExBB FM 1.0 RC1