Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Теоретические основы чатописания. [?]   Dima Smirnov   09 Apr 2001 17:51:36 
Архивное /ru.cgi.perl/18313ad1f6b5.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional