|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.01.2016, 19:12 | #1 |
Пользователь
Регистрация: 27.01.2016
Сообщений: 15
|
Ajax, MySQL - вопрос про динамическое обновление
Помогите, пожалуйста, понять логику процесса. Сразу скажу, что дальше JS, MySQL и PHP ходить не хочется.
1) Есть веб-страницы, открытые на одном адресе (это даже не чат, пользователей 2-3). Иногда юзеры перемещают по экрану объекты (по объекту, в среднем, в полминуты). Скажу сразу, это не шашки, не шахматы и вообще не игра, в перемещениях нет никакой системы. Это что-то вроде виртуальной доски с наглядными пособиями. 2) При перемещении ID объекта каким-то юзером новые координаты объекта записываются в базу данных на сервер. Ajax в действии. 3) У прочих юзеров объект тоже должен переместиться. Для этого можно: 4а) с каждой открытой страницы каждую секунду идет запрос, включается php-скрипт, сверяющий присланный номер последней записи в базе по данным HTML и сообщающий, что есть сведения по перемещению таких-то объектов в такие-то координаты после данной записи. Жабаскрпт переставляет указанные объекты. Это, наверно, жестоко по отношению к серверу? Странички, правда, для камерного употребления, но может ли такое быть 5 или 10 обращений в сек к скрипту и соотв. - к базе? Хостинг - обычный хостинг мажордомо. 4б) про длинные запросы и циклы пхп знаю - но откуда скрипт на сервере может получить апдейт перемещений по всем открытым страницам с данным адресом, если опять-таки, не обратится к базе каждую секунду? Получается, в такой ситуации никакой Комет мне не поможет? Может, я чего-то не додумала? Так как для каждого открытого экземпляра адреса запустится свой экземпляр пхп-скрипта, получится то же самое количество обращений к Базе. Дополнительный вопрос - а как банят за перегруз сервера? Предупредят как-нибудь, закроют данный адрес или весь сайт или вообще меня выгонят из интернета? |
28.01.2016, 20:33 | #2 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Есть несколько вариантов.
Первый вариант использовать как вы и описать, простые запросы через ajax, и если людей не много то ничего страшно не будет. Если если там наберется человек 100 x 60 запросов в минуту то эту уже другое дело конечно. Можно уменьшить частоту запросов до 10ти - 15ти в минуту с клиента. Есть еще такая штука как вэб-сокеты. Как раз сегодня тут поднимали этот вопрос. Посмотрите в новых темах в этом или javascreept разделе. А на счет блокировки аккаунта, трудно сказать. Все по разному, с разными правилами. Могут прислать письмо с сообщением что сервак сильно грузит и те хотели-бы вы поднять тариф-аккаунт.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
28.01.2016, 21:11 | #3 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,179
|
при указанных нагрузках - думаю до 10 чел и например раз в 5-10 сек - ни для хоста ни для базы абсолютно не напряжно..
а так - да..... вебсокеты и иже с ними |
28.01.2016, 21:23 | #4 |
Пользователь
Регистрация: 27.01.2016
Сообщений: 15
|
до 10 чел и например раз в 5-10 сек - это маловато, 100 чел по 60 раз в минуту - это многовато
максимум 10 человек по 60 раз в мин (те 1 раз в сек) - так реально? Сокеты, нод, виртуальный сервер - это очень много, начинаешь копать и понимаешь, что надолго. Comet - непонятно, как за счет лонг поллов можно уменьшить количество обращений к серверу, если надо передавать инфу между браузерами. Только увеличить интервал между проверками? |
28.01.2016, 22:15 | #5 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,179
|
вы скажите - просто так интересуетесь?
Или с конкретной целью - 100 чел в систему добавить? И потом расти еще - если так - то вебсокеты... если на десятке другом остановитесь - делайте как делаете кароче - решать проблемы нужно по мере их поступления |
28.01.2016, 22:49 | #6 | |
Пользователь
Регистрация: 27.01.2016
Сообщений: 15
|
Цитата:
Техническое решение зависит от критической массы. Я не веб-мастер, я определю методы, освою их и решу ими задачу (а лучше - ничего не осваивать, чтобы хватило указанных в шапке). У меня нет цели развивать далее свои знания в сайтостроении. Может быть, есть что-то чего я не знаю. Сокеты - точно нет. Нод - можно посмотреть, но не сейчас. Констракт 2 - тоже можно почитать, но тоже не быстро. Может что-то еще, полегче, чего не предусмотрела, от чего кусок можно просто освоить. Спасибо за информацию в любом случае. И знаете, одно дело - то, что описано в источниках, а другое дело - что реально живые мастера применяют. Что написано - можно, как идиот, читать и учить от корки до корки - а оно вообще нежизнеспособно. Последний раз редактировалось Romeo4755; 28.01.2016 в 22:53. |
|
29.01.2016, 10:28 | #7 |
Форумчанин
Регистрация: 08.11.2010
Сообщений: 593
|
Можно и не городить с каждой страницы ajax, можно использовать localStorage и обновлять его, а дальше биндить ивент изминения и обновлять во всех остальных вкладках
|
29.01.2016, 10:32 | #8 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,179
|
а может и вообще там все проще на флеше, флексе... или готовом каком продукте проще собрать такую систему
|
30.01.2016, 02:17 | #9 | ||
Пользователь
Регистрация: 27.01.2016
Сообщений: 15
|
Цитата:
Получается, что кроссбраузерное общение грамотно выполнить без сокетов и веб-серверов нельзя. А такая простая на вид задача. Кто, интересно эти статьи пишет "Реализация Comet в среде php+javascript"? Цитата:
|
||
30.01.2016, 02:58 | #10 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
ajax, flash, flex... народ, вы ищите бэкендовое решение во фронтенде.
Клиент может закешировать значение, может предугадать (как делается в играх), но об его обновлении (или реальном значении) он не узнает пока не свяжется с сервером. Вся проблема тут в сервере. Криворукие вебмастера не могут сказать клиенту, что значение не обновлялось (кеш на уровне http), не могут закешировать значение на уровне скрипта (этот ваш PHP), кеширует повторные запросы только MySQL у вас. Все здоровые люди давно перешли на node.js+mongo! Знаю, трудно, но блин хватит тормозить прогресс!
Alar, верни репу!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
есть адреси в mysql нужно поиска с AJAX for mysql | orter | PHP | 1 | 24.09.2010 10:24 |
qt динамическое обновление окна | jodam | Qt и кроссплатформенное программирование С/С++ | 2 | 18.05.2010 15:45 |
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ | Pblog | Обсуждение статей | 0 | 16.08.2009 16:00 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |