|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Dima Smirnov 2:5047/23 09 Apr 2001 17:51:36 To : All Subject : Теоретические основы чатописания. [?] --------------------------------------------------------------------------------
Уверен, что подымаемый мною вопрос далеко не нов, и, возможно, уже
есть в каком-нибудь FAQ. В любом случае: надо написать чат. :) ет,
точнее, вот так - надо организовать хранение сообщений в чате. Даже,
впрочем, нет, эдак: надо организовать такое хранение, чтобы было самое
оптимальное соотношение connection overhead / скорость чтения.
Перед этим - другой вопрос. Сам я, признаться, не любитель чатов, а оттого
не знаю - до сих пор что-нибудь придумали лучше, нежели чем при каждом
обновлении выкидывать клиенту целиком N последних сообщений? Есть ли
какие-нибудь JavaScript'овские трюки для того, чтобы отправлять клиенту
только новое сообщение плюс уведомление о стирании одного из последних?
Или все же выкидывать все одной пачкой, по старинке?
Ладно, отвлеклись и хватит. Итак, на данный момент есть четыре варианта.
Первый - хранить для каждого пользователя отдельный текстовый файл, в
который дописывать новые сообщения, приходящие к нему. При апдейте -
выкидывать файл пользователю и очищать. Вопрос в том, насколько долго
придется ждать при добавлении из-за локинга, если количество пользователей
будет приближаться, ну, скажем, к сотне.
Второй - хранить все в Berkeley DB. В структуре вида "IDuser IDmsg Text",
ну и т.д. Здесь вопрос такой - а как с локингом? Ведь Berkeley DB
кажется[?] не умеет локинг отдельной записи?
Третий вариант - ну, MySQL. Все замечательно, но затраты на подключение
каждый раз и т.д. Четвертый напрямую проистекает из третьего - MySQL +
mod_perl + persistent connections.
Четвертый вариант кажется мне идеальным, особенно если рассматривать случай
при количестве пользователей, стремящемуся к бесконечности. :) В остальных
случаях - явный оверкилл. К тому же, не факт, что скрипт будет работать под
apache.
Люди, посоветуйте! Можно, конечно, написать в скрипте эдакий модуль
абстрактного I/O, а затем перепробовать все варианты - но времени жалко.
Подсобите, пожалуйста. "Пребдого благодаред".
P.S. Посоветовали использовать nph и push для того, чтобы быстpо выкидывать
пользователю только новые сообщения. Если это и впpямь здесь пpименимо -
подскажите, как конкpетно. :) Плиз.
Xal dos ultrinnan lil thalacken d'szithrel bauthen, All. Qua'laelay.
--- Loop, Infinite: See Infinite Loop. Infinite Loop: See Loop, Infinite.
* Origin: NOBODY EXPECTS THE SPANISH INQUISITION (FidoNet 2:5047/23)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/18313ad1f6b5.html, оценка из 5, голосов 10
|