|
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
|