Организация чата

stmegabit

Новичок
Доброго времени суток, phpClub. Работаю над одним проектом и возникла такая задачка. Раньше с подобным не работал. На сайте идет online трансляция. И под самим плеером заказчики хотят сделать мини-чат. Суть в том что пользователь в своём аккаунте просто набирает сообщение и через некоторое время оно отобразится под плеером в окне чата. Одновременно на сайте находится около 50 000 человек. Пока используется простой хостинг. Обновление страницы происходит очень, очень редко. Поэтому в отображении чата будет участвовать AJAX. Интенсивность отправки сообщений не известна. Вопрос собственно в следующем. Каким образом лучше организовать очередь сообщений и с какой переодичностью производить их обновление. По сути сам механизм грамотного вывода чата. Буду благодарен за любые пояснения и ссылки)
 

AmdY

Пью пиво
Команда форума
собственно задача делится на две части:
1. скрипт принимающий сообщения, приходит сообщение и добавляется в быстрый сторадж, типа apc_* (ИМХО) или мемкешей.
2. демон для формирования списка сообщений чата. висит постоянно, в цикле раз в секунду обновляет файл chat/room_<id>.js записывая в него json массив последних сообщений для текущей ветки. соотвественно ajax-ом таскаем этот статический файл, который будет отдаваться очень быстро без всяких мультиплексоров.

p.s. Не тестировал сколько держит, но схема очень простая и эффективная.

stmegabit
дописал слово чата, пожешь поправить сам, кнопка "опции темы"
 

stmegabit

Новичок
собственно задача делится на две части:
1. скрипт принимающий сообщения, приходит сообщение и добавляется в быстрый сторадж, типа apc_* (ИМХО) или мемкешей.
2. демон для формирования списка сообщений чата. висит постоянно, в цикле раз в секунду обновляет файл chat/room_<id>.js записывая в него json массив последних сообщений для текущей ветки. соотвественно ajax-ом таскаем этот статический файл, который будет отдаваться очень быстро без всяких мультиплексоров.

p.s. Не тестировал сколько держит, но схема очень простая и эффективная.
Там пока стоит хостинг. Мемкэш не поддерживается. На счет apc ничего сказать не могу, к сожалению, не использовал. Он даёт о себе знать в phpinfo? если да то нет ли ссылок на адекватный мануал, аля квик старт, для подхватата. Комнат там не будет там один сплошной поток. И с какой переодичностью лучше таскать аяксом этот файлик, чтобы не сильно уж терроризировать БД? Спасибо.
 

AmdY

Пью пиво
Команда форума
stmegabit
да, посмотри apc, xcache или любой другой кэшер опкода, на крайняк можно шареную память юзать shmop
дело в том, что тебе нафик не нужна БД, всё хранится в памяти и сбрасывается в "статический" файл раз в секунду. а добавлений будет не так много.
 

stmegabit

Новичок
stmegabit
да, посмотри apc, xcache или любой другой кэшер опкода, на крайняк можно шареную память юзать shmop
дело в том, что тебе нафик не нужна БД, всё хранится в памяти и сбрасывается в "статический" файл раз в секунду. а добавлений будет не так много.
Посмотрел конфигурацию. Не apc не xcache там не наблюдается. В итоге получается. При приходе сообщения обработчик кидает в шареную память это сообщение. Скрипт на кроне ежесекундно дергает эту память, чистит её, формирует json, перезаписывает *.js. И каждые там пару секунд я аяксом дергаю js с json'ом и все это размещаю на странице. Ничего не упустил?
 

AmdY

Пью пиво
Команда форума
stmegabit
да. в принципе можешь юзать даже mysql, там нагрузка будет минимальная. ежесекундно одна выборка для формирования списка и десяток вставок в секунду (а то без румов в чате будет общаться невозможно).
 

stmegabit

Новичок
stmegabit
да. в принципе можешь юзать даже mysql, там нагрузка будет минимальная. ежесекундно одна выборка для формирования списка и десяток вставок в секунду (а то без румов в чате будет общаться невозможно).
Да там самого факта общения, как такового нет. Там просто сообщения как будто в эфир кидаются и ведущий может их тоже будет зачитывать и все)) чат это громко сказано... по сути лента сообщений.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Koc, у них не чат, а вебинар, схема Amdy лучше всего
 

Koc

Новичок
конкретно в его схеме такая ситуевина возможна: один запрос отвалился/запоздал - файл уже переписали и потерялись сообщения за N секунд
 

AmdY

Пью пиво
Команда форума
Koc
в файле не сообщения за последнюю секунду. а N последних сообщений или все сообщения за последних N секунд. лишние передаваемые данные не так страшны, всё равно одних заголовков - половина, для реальной экономии нужно отказываться от http, но для большинство случаев овчинка выделки не стоит
 
Сверху