Теория и технологии программирования

Какой алгоритм у чата (создание)?

Какой алгоритм у чата (создание)?
По какому алгоритму он создается?
Чаты не совершают хитрых вычислений, нуждающихся в оптимизации, поэтому "алгоритм" прозрачен и можно сказать, что он почти линейный. Главная задача чата-сервера - обеспечить защищенную связь между БД и клиентом. Поэтому упор делается на технологии, а не на замысловатые алгоритмы.
Вводишь текст, он присваивается переменной и отображается?
Движков чатов очень много, и единого алгоритма не существует, т.к. они зависят от использованных технологий, назначения чата, его функциональности и т.п., но есть единая система их работы. Абстракто:
Есть программа-сервер, есть программа-клиент. Клиент отсылает запросы (REQUEST) серверу, тот их обрабатывает и отсылает ответ (RESPОNCE). После получния ответа, клиент форматирует информацию и отображает.
Знаете как сделать это на php , примерно, присвоение текста переменной, отпровка на сервер...
Если говорить о чате в окне браузера, то тут PHP мало. Нужен JavaScript, чтобы AJAX реализовать, SQL - для запросов в БД.
Это нетривиальная задача, понять её алгоритм невозможно, не зная приведенных выше технологий.
Код PHP1А что можно сделать толькона PHP, конечно с HTML, CSS, JavaScript
PHP, HTML/CSS
если к этому списку добавить JS (AJAX), то станет еще лучше
а если хочешь еще лучше, то добавляем еще SQL
зы: без SQL надо будет с файлами работать - получиться вообще фигня, но работать будет... скрипя колесами...
Механизм работы с файлами в РНР неоправдан, в том случае, если надо сортировать данные, делать выборку и тп. Если к этому добавить невеселую перспективу того, что может произойти чтение из файла, который ещё не дописан в результате чего сотруться данные, если не использовать блокировку файла, (а если использовать - ещё один удар по скорости работы) то использование файлов становится вообще невозможным. Так что надо юзать БД.
=======================================
Короче мой вывод: прежде чем начинать что-то писать, убедитесь, что вы имеете хоть немного знаний для реализации вашей задумки. В данном случае это не прослеживается
Не так давно, занимался написанием чата +)
Во первых, ИМХО, хмл для хранения сообщений следует отмести, если в чате планируется больше 100 человек посещаемость… возникнет куча конфликтов с доступом к файлу, которые придётся решать кривыми методами, правда при этом большим плюсом является то, что аякс работает с хмл и не придётся заниматься его генерацией средствами пхп…
Я остановился в этом плане на БД (если подогнать ещё настройки с определёнными принципами кэширования и т.п., будет быстрее)
Во вторых, пхп не является самым удачным решением серверной части, т.к. под каждого пользователя в оперативку свой образ загоняется, и получается 3-5Мб оперативы на пользователя… на хостингах вроде порядка 100-200 Мб оперативы на сайт выделяют… вот и считайте, сколько он кушать будет и как тормозить
В серьёзных чатах серверную часть на С, шарпе или яве пишут обычно….
Далее, можно при желании обойтись без аякса, но при этом будет некрасивое обновление страницы, лучше всётки аякс.
Собственно по алгоритму работы чата, набери в гугле «написать чат на пхп» я помню там статей 5 хороших по инету ползает с приведёнными алгоритмами и кодом причём относительно неплохим, минут за 15 он правится до рабочего
А вообще, общий алгоритм таков:
1 фрейм: раз в несколько секунд обращается к серверу(через аякс) с запросом на новую информацию, которую и выводит пользователю
2 фрейм для ввода информации по нажатию кнопки просто передаёт в БД запись типа «кто», «время», «сообщение»
Для простейшего чата уже хватит +))
Можно ещё 3-й фрейм со списком кто в чате.
Какой алгоритм у чата (создание)?
По какому алгоритму он создается?
Иногда фреймы обрезафтся
Юзай вместо фреймов дивы, но тогда точно без аякса не обойтись.
Что это такое?
Div - тег такой <Div> в дхтмл-е есть. яваскрипт с ним очень удобно умеет работать
Какие технологии знать надо?
HTML/DHTML
JavaScript
AJAX
XML
SQL
PHP
вроде должно хватить +))
Жесть, AJAX,DHTML-?????????
AJAX - аякс, это всего лишь технология програмирования на основе яваскрипта и хмл-я... довольно просто всё... надо буквально принцип работы 3-ёх функций понять дополнительно +)) и с хмл да ява-скриптом конечно разбираться оч хорошо надо
DHTML - расширение обычного хтмл, несколько тегов добавлено опять же... если хтмл знаешь, дхтмл за час изучается +)
может HTML знать надо?
в смысле? ХТМЛ надо знать полюбому+) без него в инете счас никуда+) но для чата одного хтмл маловато
как минимум нужна серверная часть - пхп/Си/ява, которая будет сортировать какому пользователю какие сообщения отправить и отправлять их.
плюс к этому, если не хотите делать с фреймами, потребуется их какая-то замена... можно конечно попытаться и в таблице сделать, но, по моему мнению, не стоит... дхтмл в этом плане, имхо, лучше подойдёт тем более что разбираться там почти не надо.... и раз фремов не будет, значит для того, чтобы пользователю было реально ввести в окно сообщение и отправить, надо исключить явные обновления страницы на данный момент самый эффективный способ, который я для этого знаю - это аякс. Можно теоретически флешем заменить, но мне не нравятся все варианты подобной замены, о которых слышал...
Какой алгоритм у чата (создание)?
По какому алгоритму он создается?
XTML- Это HTML, или другой язык?
я пишу ХТМЛ т.к. лень раскладку переключать +)) никакого XTML конечно нету, есть HTML, его я и имею ввиду, когда пишу ХТМЛ +)) (не путать с ХМЛ, который другой язык +)) )
привет, оформляю чат на аяксе. все готово но вот проблема с обновлением контента...
как делать чтобы не было "бликов". читал что лучше через дивы делать...если не сложно опишите процесс добавления нового сообщения, то есть просто инетНТМЛ делать или же както иначе.
и 2й вопрос почитал возможности пхп есть такое как сокеты... основываясь на них тоже можно сделать чат, но вопрос остаеться тотже как обновлять робочую облаться, ясно что по тайм ауту но блики..гадосные блики.
просьба описать (можно без примеров) как реализовать разумное обновление окна и в случае если серв ответил что есть новые месаги то как их прилепить к контексту без блика.
зарание сп.
Напиши строчку, которой ты выполняешь запрос. Так последний аргумент - обновление синхронное или асинхронное. Что бы без бликов было - надо делать асинхронное.
Сообщение от Matskoff-Lion
Напиши строчку, которой ты выполняешь запрос.
да я накидал по стандарту:
Код Java12345678910111213function chat(){         //на случай если занято повторяем пока не отправиться        if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)        {                xmlHttp.open("GET","chat.php", true);                xmlHttp.onreadystatechange = gamechat;                xmlHttp.send(null);        }        else           setTimeout(chat(), 1000);} 
Сообщение от Matskoff-Lion
Так последний аргумент - обновление синхронное или асинхронное. Что бы без бликов было - надо делать асинхронное.
чето я не могу даже представить чат с синхронной роботой. но всеравно вопрос не в этом. блики не от запроса а именно от обновления контекста чат-флуда:
Код Java1234567891011121314151617181920 function gamechat(){...               //получил корень ХМЛ                xmlRoot = xmlResponse.documentElement;                               //забил в пременные даные с ХМЛ фала....нэймы говорящие                chatFlyd = xmlRoot.getElementsByTagName("flyd").item(0).firstChild.data;                chatFlyders = xmlRoot.getElementsByTagName("flyders").item(0).firstChild.data;                               //для удобства                gameFlyd = document.getElementById("flyd");                gameFlyders = document.getElementById("flyders");                               //собсно родитель блика!                gameFlyd.innerHTML = chatFlyd;                gameFlyders.innerHTML = chatFlyders;                gameFlyd.scrollTop = 150;... 
в общем я в ступоре, перечитал много чего и все равно не вижу разницы в какой среде реализовывать, и не могу понять фразу "алгоритм чата зависит от платформы" тоже чушь некая.
мысли: крути не крути, а всегда будет некая область которую надо рефрешить если есть новые месаги, и не важно будь то див в НТМЛ или текстбокс на сяха.
почитал и нашел интересные идеи но что то не прозрачно описаны были, суть в том чтоб не добавлять инертом новые месаги а создавать новый дивы средствами ДОМ технологии, это мне кажется больше всего круто НО!!!
нашел суперский чат такого принципа, у прогера портфолио почти золотое и игры и сайты умные ну и этот ЧАТ, так вот взял порукоблудил и в результате = 200 месагов от меня "тест чата" то есть он то создавал новые дивы и все круто но не удалял старые, проблему решить реально, но!!!
у меня только 1н вариант по айди "больше, скажем 20, килять первый" и получаеться через месяц или флудную недельку айдишник будет ооооочень большой%) то есть еще как-то надо сделать аля очередь...
в итоге я в идейном ступоре, и просто хочется 1-2 совета от того кто создавал подобные чудеса как решал и в чем я туплю.
Добавлено через 9 минут 6 секунд
http://www.phpfreechat.net/demo
вот как пример придел мечтаний%) приват есть список юзеров есть скорость отличная, простенький...но мне надо еще проще ибо я буду крутить его на сайт только для зарегеных. но факт остается фактом хочу вот такое чудо