Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.04.2010, 11:56
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию "Зоопарк" на сервере - насколько это криминально?

Допустим, есть на 90% готовое приложение, и при начале работы над приложением никаких online-действий не планировалось. Поэтому сервер собран на связке php/memcache/mysql, обмен реализован по http, сервер отдает xml. Все более-менее работает и объективной потребности в переходе на сервер другой архитектуры нет.

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

Требует решения ситуация, когда второй пользователь находится в игре. Можно заставить клиента лазить на сервер по таймауту (но с маленьким таймаутом имеем большую дополнительную нагрузку на сервер, а с большим - теряем online), а можно запустить "маленький сокет-сервер" на java , единственное назначение которого будет в том, чтобы "дернуть" клиента, чтобы тот, в свою очередь залез на сервер и обновил свои данные.

Кто-нибудь так делает?

Старый 24.04.2010, 20:15
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 2  
Ответить с цитированием
Crenth
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
поднимается слушающий сокет на серванте.
клиенты цепляются к нему fulltime.
каждый раз, когда это необходимо, сервер шлет по трубе команду клиенту, тот в зависимости от команды выполняет определенные действия. например, запрашивает на серваке данные.
ничего зазорного в этом нет и это самый быстрый и не ресурсоемкий способ

Старый 24.04.2010, 22:48
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
ок
так и сделаю

Старый 07.05.2010, 13:03
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 4  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Еще возник вопрос по итогам ввода в эксплуатацию указанного зоопарка.

Сейчас организовано таким образом:

Приложение работает с сервером на php/memcache/mysql. Собственно, это немного производства и отправка поездов со своей станции на другие станции. Когда пользователь со станции внутри своего клиента отправляет поезд на станцию внутри другого клиента, то происходит обновление информации о местоположении поезда в базе, после чего клиенту, на который прибывает поезд, отправляется через сокет-сервер команда обновить поезда на своей станции, он лезет в базу и показывает у себя прибывающий поезд. Поскольку это не реалтайм, временные издержки приемлемые.

Обращение с базой реализуется исключительно на php, сокет-сервер на java работает в режиме маршрутизатора сообщений.

Возникла необходимость инициировать отправку сообщений на клиенты с требованием обновить контент у себя после обновления базы со стороны php. По списку, который сформирован по итогам обновления базы.

Умом понимаю, что можно доработать сокет-сервер, чтобы эту модификацию базы выполнял он сам, тогда и вопрос рассылки решится элементарно, но может есть способ проще?

Размерность списка идентификаторов для рассылки сообщений, думаю, в пределах 1000.

Старый 07.05.2010, 13:46
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 5  
Ответить с цитированием
Crenth
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
от не совсем врубился в проблему
__________________
Trapatatupatupa

Старый 07.05.2010, 15:41
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
по крону запускается php-скрипт, модифицирующий базу.
по итогам модификации возникает список модифицированных локаций (список userID)
этот список надо как-то передать сокет-серверу на java, чтобы он разослал клиентам по этому списку команду на обновление своих данных

естественно, рассылать нужно тем, кто в онлайне, но сокет-сервер это как раз знает

фактически, мне нужен, как подозреваю, сокет-клиент на php, который приконнектился бы к сокет-серверу на java


Последний раз редактировалось mikhailk; 07.05.2010 в 16:00.
Старый 07.05.2010, 16:47
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 7  
Ответить с цитированием
Crenth
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
а есть возможность заставить сокет-сервер (модифицировать его код) генерить список модифицированных локаций (список userID) ?
__________________
Trapatatupatupa

Старый 07.05.2010, 16:52
membrilius вне форума Посмотреть профиль Отправить личное сообщение для membrilius Найти все сообщения от membrilius
  № 8  
Ответить с цитированием
membrilius
 
Аватар для membrilius

Регистрация: Aug 2008
Сообщений: 258
По-моему проще сделать что бы java-сервер сам это делал. Просто модуль прикрутить, который лез бы в базу и делал что ему там надо. Поставить там какой-нибудь механизм, что модуль выполнялся в какое-то определённое время..

Ну или да, сокет-клиент на php ... который бы запускался cron'ом, лез в базу, подключался к java-серверу и делал что ему нужно.. но это что-то очень странное..

Старый 07.05.2010, 16:59
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Переходите полностью на сокеты. Стояла такая же проблема недавно - обмозговав, перешли на сокеты. Сейчас вы потратите время соединяя эту проблему, завтра снова будет проблема, послезавтра ещё одна и т.д. Проще сделать сразу правильно.

Старый 07.05.2010, 18:44
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 10  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
да-да
это я уже понял
следующее приложение будет стоять на сокет-сервере целиком

В данном случае действительно разумнее перенести процедуру апдейта базы в сокет-сервер. Серверу MySQL, полагаю, все равно, кто в него лазит?

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


Часовой пояс GMT +4, время: 20:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.