Как сохранить данные на сервере в памяти, доступной для всех пользователей

phprus

Moderator
Команда форума
planarik
А почему в твоем коде нет ни одной ветки else? Или обрабатывать ошибки уже не модно?

Beavis
спасибо всем кто удосужился хотя бы понять вопрос..
Вопрос то поняли все, а все ответы ИМХО сводились фактически к следующим утверждениям:
- Хранение данных и кеширование - это разные задачи.
- Для хранения данных и для их кеширования нужно использовать специальные инструменты, например, такие как MySQL и memcache.
- Оптимизировать нужно именно ту часть, которая тормозит.

Мне почемуто кажется что в реализации полноценного чата на разделяемой памяти тормозить будет тот код, который при реализации на mysql можно перевести в sql запросы (при том не сложные и с выборкой по индексным полям)
 

WP

^_^
Что, правда? Если 10к пользователей это 5к запросов в секунду только на одно обновление... загнется моментально.
phprus
Не будет тормозить, а наоборот. Для полноценного чата делается параметры id отправителя (4 байта), id получателя, 4 байта времени отправки, один байт под флаги (приватность и т.д.), длина текста и собственно текст.
Парсинг такой структуры будет быстрым.
 

phprus

Moderator
Команда форума
WP
Для полноценного чата делается параметры id отправителя (4 байта), id получателя, 4 байта времени отправки, один байт под флаги (приватность и т.д.)
Чат - это набор таких структур. Но как делать выборку из этого набора, если его размещать например в разделяемой памяти доступ к которой возможен по одному ключу? Или нам придется еще самим поддерживать индексную структуру по которой мы будем искать ключ нужной записи, по которому мы будем оставать запись из разделяемой памяти? Или нам придется держать в памяти блок например из 100 последних записей и при каждом запросе его парсить?
 

Beavis

Banned
а почему бы не держать в памяти блок из 100 последних сообщений и при каждом запросе их парсить? 100 строк текста - памяти то почти и не занимают

-~{}~ 08.07.07 14:36:

phprus
"Мне почемуто кажется что в реализации полноценного чата на разделяемой памяти тормозить будет тот код, который при реализации на mysql можно перевести в sql запросы (при том не сложные и с выборкой по индексным полям) "

согласен, но насколько я знаю данные из памяти читаются гораздо быстрее чем из файлов, поэтому я и хочу реализовать метод хранения временных данных в памяти
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Beavis
а почему бы не держать в памяти блок из 100 последних сообщений и при каждом запросе их парсить? 100 строк текста - памяти то почти и не занимают
А почему-бы не юзать HEAP-таблицы для данных целей?
 

phprus

Moderator
Команда форума
Beavis
но насколько я знаю данные из памяти читаются гораздо быстрее чем из файлов
Да. Но Mysql умеет сам хранить таблицы в памяти (тип таблицы - HEAP), да и кеширование данных при чтении из файла никто не отменял.
 

planarik

Новичок
А почему в твоем коде нет ни одной ветки else? Или обрабатывать ошибки уже не модно?
Я сам принцип показывал, а не создавал рабочее приложение. Кстати, можно не только для чата использовать и в сабже вопрос не о чате был. Понятно, что в рабочем коде будут else, хотя бы чтоб семафор прикрыть в случае чего.
 

HraKK

Мудак
Команда форума
WP
10к пользавтелей, на системе из 4 серверов работает на ура.
 

HraKK

Мудак
Команда форума
Beavis
Незадовался мыслю что если у чата 10к онлайн, может это "не только чат"? А именно чат.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
похоже, веб-разработчиков можно разделить на тех, которые писали популярный чат, и тех, которые его не писали

представители этих двух групп вряд-ли смогут прийти к единому мнению по какому-либо вопросу :)
 

cDLEON

Онанист РНРСlub
10к пользавтелей
Сомневаюсь я, что в случае с разделяемой памятью, если пользователи будут писать хотя бы по 200-300 байт в секунду, то ничё не ляжет. А ещё весь этот мусор нужно как то чистить....

-~{}~ 11.07.07 05:34:

Моё имхо - нужно использовать сокет-сервер и маленький флеш файлик как механизм для взаимодействия с ним.
 
Сверху