Пишем свой чат на PHP
Задался я мыслью, написать подобие чата. как и все великое, начнется это с простых вещей....
- чат будет на фреймах -
- главный, с сообщениями
- ввод, где будет вводится текст
- список ников, понятно
- и..фрейм "драйвер" всего этого дела )
- будет юзать mySQL, потому как очень просто все тогда получится
- в чате не будет регистрации, а следовательно админов и т.д., для простоты реализации и понятности...
UML диаграмма последовательности
Итак, начнем.
заглав пага у нас будет index.html куда и будет попадать юзер при заходе на chat.test1.ru допустим ):
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <frameset rows="0,50,*" onunload='alert( "выход" );'> <frame noresize frameborder="0" name="dummy" src="dummy.php" > <frame noresize frameborder="0" name="chat" src="input.php" > <frameset cols="200,*" onunload='alert( "выход" );'> <frame noresize frameborder="0" name="nicklist" src="users.php" > <frame noresize frameborder="0" name="main" src="main.php" > </frameset> </frameset> </html>
обьясняю - это страница фреймсет - набор фреймов,
- первый фрейм, с нулевой высотой - "драйвер"...он будет перегружатся каждые...ну скажем 10 секунд, и проверять новые сообщения...пользователей убирать по тайм ауту и т.д.
- второй фрейм ссылается на input.php..простенький скрипт, который будет принимать мессаги от юзера и пиндюрить их в БД нашу (кстати...)
- третий - список ников...с js ссылками на вставку в input поле
- ну и четвертый - где будут выводится все сообщения....
<
p>для чата нам понадобятся всего две таблицы (да, да ))):
CREATE TABLE `chat` ( `userid` int(10) unsigned NOT NULL default '0', `message` varchar(255) NOT NULL default '0', `date` int(10) unsigned NOT NULL default '0', KEY `userid` (`userid`) ) TYPE=MyISAM; CREATE TABLE `user` ( `username` varchar(50) default NULL, `userid` int(10) unsigned NOT NULL auto_increment, `lastactivity` int(10) unsigned NOT NULL default '0', `lastupdate` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`userid`) ) TYPE=MyISAM;
тут кажется должно быть просто:
chat - три поля:
- номер юзера (хотя надо было бы заносить имя а не ссылку на таблицу юзеров, так как при выходе стирается запись из user на которую будет ссылатся chat, ну да не страшно....
- сам текст сообщения
- и время его...
user
- имя,
- номер,
- последняя активность (для определения диссконнекта)
- последний апдейт сообщений (чтобы проверять на наличие новых)
Recent blog posts
- Conky rings #2
- Conky rings #1
- Instant creation uml sequence diagrams
- How to make wine + totalcmd associate files with KDE applications
- X over SSH or remote Gnome on local KDE
- Sudoku - free online solver
- Next simple tool
- Patch for code_swarm
- Граф зависимостей пакетов в debian
- Zend Optimizer 3.3 и PHP5 не подружились сразу?
Who's online
There are currently 0 users and 2 guests online.
Monthly archive
- February 2002 (2)
- April 2002 (1)
- July 2002 (2)
- December 2002 (1)
- March 2003 (3)
- June 2003 (1)
- October 2003 (3)
- November 2003 (1)
- December 2003 (1)
- August 2004 (1)
Popular content
- Создание сайтов (27,848)
- Крылатые латинские выражения (22,120)
- Судоку - бесплатное решение онлайн (12,920)
- Пишем свой чат на PHP (8,974)
- Судоку - решений решатель (5,312)
- Undelete restore Compact Flash за 5 минут (5,003)
- X over SSH or remote Gnome on local KDE (3,841)
- Оптимизация web сервера (3,837)
- Как сделать сайт (3,427)
- Сжатие javascript (2,866)
Tags
свобода
compiz
Запад
ssl
X
чужое
google
оптимизация
c++
apt
ajax
apache
joomla
web
Gnome
CMS
software
ssh
латынь
капитализм
html
cairo
миграция с windows на linux
головоломки
ubuntu 7.10
KDE
оси зла
drupal 6
webmin
xaraya
sh
bitrix
debian
coding
php
mysql
ubuntu
drupal
javascript
debug
CSS
bugs
климат
пресса
о жизни
pppoe
dle
Авторское право
visual c++
Глобальное потепление
python
java
юмор
scripts
openbox
xslt
monitoring
proxy
xml
drupal 5
howto
климат Земли
rrdtool
Россия
linux
защита информации
bash
mssql
lua
Comments
таймаут
немного не понял принцип работы таймаута
Технологии
Технологии ускакали далеко вперед за эти года, статья была написана в 2004 году, а сам скрипт в 2003 в качестве прототипа.
Если имелся ввиду таймаут на удаление пользователей, то принцип таймаута был простой -
При очередном обновлении dummy фрейма и дергания dummy.php, вычислялась точка времени, находящаяся в прошлом на 5 минут от текущего момента.
$now = mktime() - 5 * 60;и далее делалась попытка удалить из таблиц сообщений и пользователей все что старше этой метки. Если такие записи были, то:Поставил этот чат у себя на
Поставил этот чат у себя на компе. К сожалению не работает автообновление окна чата и списка юзеров. Окно чата обновляется если только что-либо написать в чат. Если юзер ничего не пишет, то он не видит, что написали другие.
Список юзеров обновляется - только если вручную обновить фрейм.
да эм. славный 2003! :)
С Новым Годом, россияне.
Ну и все остальные хорошие люди дважды.
А хорошие россияне - трижды!
Спасибо!!
Спасибо огромное))) Очень хорошо и подробно все описано теперь все понятно а то по книгам ничего не понятно видимо автор непутевый или я тупил)))... побольшебы таких скриптов с подробным описанием его создания))))
Post new comment