Benvolio
Guest
Кто-нибудь пробовал такую схему чата: ... ?
Привет! Кто-нибудь пробовал такую структуру чата на больших нагрузках (например на человеках 300 одновременно)?
Стандартная связка Linux, Apache, PHP (mod_php), MySQL. Физически все находится на одной машине. PHP скомпилен с поддержкой shared memory. В ней мы храним last_message_id последнего сообщения из таблицы сообщений. На одном из апачевских портов настроено keep-alive=on. На этом порту будет сидеть скрипт вывода непрерывного потока сообщений чата. Скрипт, выводящий сообщения, с интервалом в полсекунды смотрит на значение переменной last_message_id, находящейся в shared memory, если оно увеличилось - коннектится к БД и выводит необходимое кол-во новых сообщений. Соответственно, при записи новых сообщений в таблицу увеличиваем last_message_id. Предусмотрена "многокомнатность" чата.
Вроде как бы все для начала... Основные вычислительные ресурсы машины обычно тратятся на запрос типа есть ли новые сообщения, мы это обыгрываем с shared memory.
Поделитесь опытом и соображениями, плз... Какие есть здесь узкие места, опасения?
Спасибо!
Привет! Кто-нибудь пробовал такую структуру чата на больших нагрузках (например на человеках 300 одновременно)?
Стандартная связка Linux, Apache, PHP (mod_php), MySQL. Физически все находится на одной машине. PHP скомпилен с поддержкой shared memory. В ней мы храним last_message_id последнего сообщения из таблицы сообщений. На одном из апачевских портов настроено keep-alive=on. На этом порту будет сидеть скрипт вывода непрерывного потока сообщений чата. Скрипт, выводящий сообщения, с интервалом в полсекунды смотрит на значение переменной last_message_id, находящейся в shared memory, если оно увеличилось - коннектится к БД и выводит необходимое кол-во новых сообщений. Соответственно, при записи новых сообщений в таблицу увеличиваем last_message_id. Предусмотрена "многокомнатность" чата.
Вроде как бы все для начала... Основные вычислительные ресурсы машины обычно тратятся на запрос типа есть ли новые сообщения, мы это обыгрываем с shared memory.
Поделитесь опытом и соображениями, плз... Какие есть здесь узкие места, опасения?
Спасибо!