Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

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

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

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

icq: 446.452.423
По умолчанию

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

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

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

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

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

Могут прислать письмо с сообщением что сервак сильно грузит и те хотели-бы вы поднять тариф-аккаунт.
__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k
pompiduskus вне форума   Ответить с цитированием
Старый 28.01.2016, 22:11   #3
ADSoft
Профессионал
 
Регистрация: 25.02.2007
Адрес: Татарстан
Сообщений: 3,266
Репутация: 912

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

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

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

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

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

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

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

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

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

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

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


18:22.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru