|
|
|||||
[+1 25.04.11]
|
Правильный чат
Вот возник вопрос. Я сделал чат, который работает по такой схеме (с MySql):
1. Каждую секунду идет запрос на сервер, который возвращает ответ, несколько последних сообщений которых нету в чате у пользователя. 2. При создании сообщения "INSERT" - ну, логично Ну вот представим, сидит в чате 5 человек и общаются. Это примерно и есть 1 INSERT в секунду, а то и больше. На сколько это грузит сервер? И как вообще правильно реализуются флеш чаты на MySql? Долго искал в гугле, находил только php чатец в txt логом, и без флеша само собой, поэтому решил сделать свой. Но мне кажется что это не правильно... А как правильно? |
|
|||||
Смею предположить что тут зависит от нагрузки всё. Допустим если представить мега-чато сервер на котором общаются миллионы людей в разных "комнатах". То тут конечно txt файликом + узким инет каналом не обойтись. А на пятерых наверное хватит) Если рассчитано на ацкие нагрузки - то тогда наверное правильно писать демон-программу которая будет крутиться на сервере и делать дела. Как правило это делют на С или на Java. Если интересно, то можете про сокет-серверы почитать.
__________________
Играй. Это жизнь. Всё повторяется. Играй. |
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
Более правильно при данном подходе делать некий массив для каждой комнаты, размерностью скажем 30 сообщений.
Когда пользователь пишет что то в чат, в массив добавляется запись. Когда пользователь хочет получить запись, получает сообщения из массива. Когда кол-во записей достигает 30, 20 сообщений массива одним запросом добавляются в базу, и удаляются из массива. Соответственно снижается нагрузка на базу. Более правильно было бы сделать ту же схему, при которой 20 записей дописываются в файл, без базы. А на сервере ходит скрипт по крону, который разбирает файл и складывает в базу, раз в 5 мин например. И еще для экономии трафика и снижения нагрузки желательно, что бы не клиенты теребили сервер раз в секунду, а сервер дергал клиентов только из определенной комнаты, и только когда добавилась новая запись
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
Часовой пояс GMT +4, время: 00:33. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|