Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2016, 19:12   #1
Romeo4755
Пользователь
 
Регистрация: 27.01.2016
Сообщений: 15
По умолчанию Ajax, MySQL - вопрос про динамическое обновление

Помогите, пожалуйста, понять логику процесса. Сразу скажу, что дальше JS, MySQL и PHP ходить не хочется.
1) Есть веб-страницы, открытые на одном адресе (это даже не чат, пользователей 2-3). Иногда юзеры перемещают по экрану объекты (по объекту, в среднем, в полминуты). Скажу сразу, это не шашки, не шахматы и вообще не игра, в перемещениях нет никакой системы. Это что-то вроде виртуальной доски с наглядными пособиями.

2) При перемещении ID объекта каким-то юзером новые координаты объекта записываются в базу данных на сервер. Ajax в действии.

3) У прочих юзеров объект тоже должен переместиться. Для этого можно:

4а) с каждой открытой страницы каждую секунду идет запрос, включается php-скрипт, сверяющий присланный номер последней записи в базе по данным HTML и сообщающий, что есть сведения по перемещению таких-то объектов в такие-то координаты после данной записи. Жабаскрпт переставляет указанные объекты.
Это, наверно, жестоко по отношению к серверу? Странички, правда, для камерного употребления, но может ли такое быть 5 или 10 обращений в сек к скрипту и соотв. - к базе? Хостинг - обычный хостинг мажордомо.

4б) про длинные запросы и циклы пхп знаю - но откуда скрипт на сервере может получить апдейт перемещений по всем открытым страницам с данным адресом, если опять-таки, не обратится к базе каждую секунду? Получается, в такой ситуации никакой Комет мне не поможет? Может, я чего-то не додумала? Так как для каждого открытого экземпляра адреса запустится свой экземпляр пхп-скрипта, получится то же самое количество обращений к Базе.

Дополнительный вопрос - а как банят за перегруз сервера? Предупредят как-нибудь, закроют данный адрес или весь сайт или вообще меня выгонят из интернета?
Romeo4755 вне форума Ответить с цитированием
Старый 28.01.2016, 20:33   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Есть несколько вариантов.
Первый вариант использовать как вы и описать, простые запросы через ajax, и если людей не много то ничего страшно не будет.

Если если там наберется человек 100 x 60 запросов в минуту то эту уже другое дело конечно.

Можно уменьшить частоту запросов до 10ти - 15ти в минуту с клиента.

Есть еще такая штука как вэб-сокеты. Как раз сегодня тут поднимали этот вопрос.
Посмотрите в новых темах в этом или javascreept разделе.

А на счет блокировки аккаунта, трудно сказать. Все по разному, с разными правилами.

Могут прислать письмо с сообщением что сервак сильно грузит и те хотели-бы вы поднять тариф-аккаунт.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 28.01.2016, 21:11   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

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

а так - да..... вебсокеты и иже с ними
ADSoft вне форума Ответить с цитированием
Старый 28.01.2016, 21:23   #4
Romeo4755
Пользователь
 
Регистрация: 27.01.2016
Сообщений: 15
По умолчанию

до 10 чел и например раз в 5-10 сек - это маловато, 100 чел по 60 раз в минуту - это многовато
максимум 10 человек по 60 раз в мин (те 1 раз в сек) - так реально?

Сокеты, нод, виртуальный сервер - это очень много, начинаешь копать и понимаешь, что надолго.
Comet - непонятно, как за счет лонг поллов можно уменьшить количество обращений к серверу, если надо передавать инфу между браузерами. Только увеличить интервал между проверками?
Romeo4755 вне форума Ответить с цитированием
Старый 28.01.2016, 22:15   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

вы скажите - просто так интересуетесь?
Или с конкретной целью - 100 чел в систему добавить? И потом расти еще - если так - то вебсокеты... если на десятке другом остановитесь - делайте как делаете

кароче - решать проблемы нужно по мере их поступления
ADSoft вне форума Ответить с цитированием
Старый 28.01.2016, 22:49   #6
Romeo4755
Пользователь
 
Регистрация: 27.01.2016
Сообщений: 15
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
вы скажите - просто так интересуетесь?
Или с конкретной целью - 100 чел в систему добавить? И потом расти еще - если так - то вебсокеты... если на десятке другом остановитесь - делайте как делаете

кароче - решать проблемы нужно по мере их поступления
Я интересуюсь, потому что боюсь, что кроме 2х-3х одновременных целевых пользователей на адрес набегут еще 10 человек в то же время, хочу заложиться на видимую перспективу.
Техническое решение зависит от критической массы. Я не веб-мастер, я определю методы, освою их и решу ими задачу (а лучше - ничего не осваивать, чтобы хватило указанных в шапке). У меня нет цели развивать далее свои знания в сайтостроении.

Может быть, есть что-то чего я не знаю. Сокеты - точно нет. Нод - можно посмотреть, но не сейчас. Констракт 2 - тоже можно почитать, но тоже не быстро. Может что-то еще, полегче, чего не предусмотрела, от чего кусок можно просто освоить.

Спасибо за информацию в любом случае.
И знаете, одно дело - то, что описано в источниках, а другое дело - что реально живые мастера применяют. Что написано - можно, как идиот, читать и учить от корки до корки - а оно вообще нежизнеспособно.

Последний раз редактировалось Romeo4755; 28.01.2016 в 22:53.
Romeo4755 вне форума Ответить с цитированием
Старый 29.01.2016, 10:28   #7
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Можно и не городить с каждой страницы ajax, можно использовать localStorage и обновлять его, а дальше биндить ивент изминения и обновлять во всех остальных вкладках
CodeNOT вне форума Ответить с цитированием
Старый 29.01.2016, 10:32   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

а может и вообще там все проще на флеше, флексе... или готовом каком продукте проще собрать такую систему
ADSoft вне форума Ответить с цитированием
Старый 30.01.2016, 02:17   #9
Romeo4755
Пользователь
 
Регистрация: 27.01.2016
Сообщений: 15
По умолчанию

Цитата:
4а) с каждой открытой страницы каждую секунду идет запрос, включается php-скрипт, сверяющий присланный номер последней записи в базе по данным HTML и сообщающий, что есть сведения по перемещению таких-то объектов в такие-то координаты после данной записи. Жабаскрпт переставляет указанные объекты.
Это, наверно, жестоко по отношению к серверу?
Так как экземпляр срипта у нас при каждом запуске новый, получается, каждый раз приходится верифицироваться в базе, открывать и закрывать ее. Это не просто "обращение" к базе, это каждую секунду от каждого пользователя целый процесс! Нет, это чет-ти что.
Получается, что кроссбраузерное общение грамотно выполнить без сокетов и веб-серверов нельзя.
А такая простая на вид задача.

Кто, интересно эти статьи пишет "Реализация Comet в среде php+javascript"?

Цитата:
флеш и флекс
На флеше сделано, но проблемы при использовании http те же и он не работает, флеш, больше на очень многих устройствах.
Romeo4755 вне форума Ответить с цитированием
Старый 30.01.2016, 02:58   #10
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

ajax, flash, flex... народ, вы ищите бэкендовое решение во фронтенде.
Клиент может закешировать значение, может предугадать (как делается в играх), но об его обновлении (или реальном значении) он не узнает пока не свяжется с сервером.
Вся проблема тут в сервере. Криворукие вебмастера не могут сказать клиенту, что значение не обновлялось (кеш на уровне http), не могут закешировать значение на уровне скрипта (этот ваш PHP), кеширует повторные запросы только MySQL у вас. Все здоровые люди давно перешли на node.js+mongo! Знаю, трудно, но блин хватит тормозить прогресс!
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть адреси в 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