Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: опытные помогите мыслью

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: вопрос по чату
Bio man
Отправлено: 27 Октября, 2011 - 22:36:10
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




вот делаю я чат. как отслеживать пользователей кто в чате (в конкретной комнате)? мне не нужен код, нужна сама идея, весь день думал, нечего не надумал
 
 Top
EuGen Администратор
Отправлено: 27 Октября, 2011 - 22:39:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Записывайте время последнего действия (например, фразы) и сравнивайте с текущим. Если разница больше, скажем, 5 минут, то считать, что пользователь ушел в оффлайн.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Bio man
Отправлено: 27 Октября, 2011 - 22:55:09
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




вы не так меня поняли, как онлайн сделать я знаю и уже сделал, мне нужно отследить где пользователь находится! допустим в чате 10 человек и 3 из них в одной комнате, 3 в другой итд.. допустим
Флудильня[N]
Общение[N]
и желательно что бы ид этих пользователей можно было бы в дальнейшем использовать... надеюсь выразился понятно
 
 Top
OrmaJever Модератор
Отправлено: 27 Октября, 2011 - 23:04:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ну а здесь смотря как у вас зделаны эти комнаты, чем они отличаются? Когда пишут сообщение как сервер знаю в какую комнату писать?
Вот отслеживать так как сказал EuGen, если человек написал последнее сообщение в общую значит он там, если в флудилку значит там. Если между комнатами нужно както переходить (типо вкладок на странице) то можно зделать при нажатии на вкладку другой комнаты js отправляет на сервер запрос что пользователь перешёл в ту комнату. Вобщем по разному может быть, смотря как зделан чат.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
caballero
Отправлено: 27 Октября, 2011 - 23:28:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




пользователи по комнатам сами не лазят
если он в комнате значит он выбрал какое то действие и где то записано что он в этой комнате иначе как узнать куда посылать сообшения

у вас вообще есть уже база какая то
или делаю чат пока на уровне разметки в HTML?

как то странно звучит что у вас на ващем сайте с вашим кордом оказывается нужно что то отслеживать


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Bio man
Отправлено: 27 Октября, 2011 - 23:37:56
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




есть таблица комнат, там хранится ид, название и еще 1 поле которое не имеет отношения к теме... тоесть комнаты создаются на лету (выбираются из БД) и в каждой комнате нужно подсчитать и запомнить ид пользователя(ей). вопрос больше направлен к БД, т.к нужно где то хранить ид тех кто в данный момент находятся и что то делают в конкретной комнате. может создать поле users и в него писать сериализированую строку с ид?
 
 Top
ams
Отправлено: 27 Октября, 2011 - 23:53:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




Каждые секунд 10 аяксом проверять кто в онлайне... А кто в каких комнатах приблизительно анологично Улыбка
 
 Top
OrmaJever Модератор
Отправлено: 28 Октября, 2011 - 00:01:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




вот правельный ответ.
caballero пишет:
если он в комнате значит он выбрал какое то действие и где то записано что он в этой комнате иначе как узнать куда посылать сообшения

Если у вас как-то не так значит чат плохо написан.
(Добавление)
Bio man пишет:
есть таблица комнат, там хранится ид, название и еще 1 поле которое не имеет отношения к теме... тоесть комнаты создаются на лету (выбираются из БД) и в каждой комнате нужно подсчитать и запомнить ид пользователя(ей). вопрос больше направлен к БД, т.к нужно где то хранить ид тех кто в данный момент находятся и что то делают в конкретной комнате. может создать поле users и в него писать сериализированую строку с ид?

как я себепредставляю чат: 2 таблицы, одна названия (ид комнат и всякая информация по ним), вторая пользователи (ид пользователя, ник, ид комнаты, время последнего действия (либо вход в комнату либо отправка сообщения) и т.д.) как только пользоватль заходит в чат попадает например в общую (в бд обновляется ид комнаты на общую, когда переходит в другие комнаты, в бд меняется ид комнаты). А узнавать кто сидит в этой комнате не сложно, нужно выбрать всех пользователей с ид этой комнаты у которых последнее действие было раньше чем 5 минут.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Октября, 2011 - 00:43:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




OrmaJever пишет:
последнее действие было раньше чем 5 минут.

Когда я писал свое чудо техники, я тоже задался вопросом определения списка онлайн.
Так вот просто смотреть время последнего сообщения (это типа у нас тут зацепка такая), то если юзер ничего не будет писать означенное время, то его система посчитает "оффлайн", на самом же деле он будет читать все сообщения которые пишут другие.

Да и пять минут это слишком много.
"Вася" сидел в чате, а потом ушел, не разлогинился, а просто закрыл браузер.
Система его еще пять минут будет считать присутствующим.

В своем "чуде" я вынес интервал обновления в настройки.
Там стоит 10 сек. Каждый юзер каждый раз отправляет запрос "а нет ли новых сообщений?".
Его то и нужно использовать чтобы отфильтровать юзеров которые не присылали такой запрос уже N секунд.
И свое время запроса обновить, чтобы тебя не отфильтровали.

Bio man если мой чат еще не смотрели - посмотрите, возьмите принцип.
 
 Top
Bio man
Отправлено: 28 Октября, 2011 - 15:13:33
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




ого, скока ценной информации! а можно адрес чата? у меня не только чат а целый комплекс. в таблице пользователей есть поле where оно определяет где пользователь находится (в чате, форуме итд), я так понял, что лучше всего создать новое поле в пользователях - chat_room. и вписывать туда ид комнаты с определенным интервалом, если пользователь что то делает в комнате (нажал кнопочку какую нибудь). вообщем я понел как сделать такую штуку, спасибо всем за помощь
(Добавление)
и я делаю вап сайт
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Октября, 2011 - 15:18:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB