| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Юзеры в чате |
| Автор: Гость_Sirius 23.11.2005, 15:28 |
| Как сделать чтоб юзеры, которые не кликнули на кнопку -выход- а закрыли чат закрыв окно чата, выкидывались из списка он-лайн юзеров..? Можно это сделать каким-либо способом, но не способом тайм-аута , (где надо сохранять время, и если пользователь за это время не разу не кинул сообщений то он выкидывается, этот способ мне не нравится)..есть какой-нибудь еще способ? |
| Автор: Neitron 23.11.2005, 16:30 |
| Нет. |
| Автор: Alix 23.11.2005, 18:36 |
| если нечего делать можешь пинговать всех юзеров каждые 5 мин... но тогда пролетают те, кто с прокси... Т.е. тебе с ними тяжело будет |
| Автор: DemoCode 23.11.2005, 18:44 |
| Я где-то видел: при выходе из чата (закрытие окна) там в body по событию onUnload открывается маленькое окошко, с надписью типа "Спасибо, заходите ещё", и через несколько секунд оно закрывается. Это окошко запрашивает скрипт, который вычеркивает этого посетителя из списка активных. Но это нелучший вариант, но единственный способ сделать это не тайм-аутом. |
| Автор: Mal Hack 23.11.2005, 18:54 |
| Можно повесить на OnClose и на OnExit открытие нового окна вызывающего скрипт выхода из чата, но это бред, который работает в 20-25% случаев, если не меньше. |
| Автор: R.M. 24.11.2005, 09:44 |
| Если у тя есь чат то он скорей всево на фреймах, тогда обновляй фрейм например со списком юзеров и проверяй какой из юзеров присутствует (не пишет сообщений а именно присутствует) если он отсутствует скажем 10 сек он удаляется И вобще почитай тему может чё поможет http://forum.vingrad.ru/index.php?showtopic=66829&hl= там этот вопрос и обсуждался как раз |
| Автор: Neitron 24.11.2005, 11:24 | ||
Я думаю автор знает об этом способе. |
| Автор: patt 24.11.2005, 19:24 | ||
| Ещё вариант - хранить идентификатор пользователя и время последнего обращения в имени файла - снимает проблему одновременного обращения к файлу нескольких юзеров, или нарузку с БД...... Вообщем вот:
|
| Автор: Elfet 24.11.2005, 19:37 |
| patt, а это точно нагрузку снимает? |
| Автор: Mal Hack 24.11.2005, 20:14 | ||
Зато нагружка на сервак будет... Причем не факт, что меньшая. |
| Автор: patt 24.11.2005, 21:20 | ||
Ну если БД не используется........... да я думаю снимает А в целом, я думаю нагрузка на сервак то же не больше....... если навскидку прикинуть: имена файлов хранятся в таблице, в первых секторах диска, тоесть при поиске сканируется неприрывная область памяти, а при работе с самими файлами или БД, делается то же самое, только при нахождении файла с данным именем идёт переход по физическому адресу, а потом уже работа с данными..... Файл к тому же может быть фрагментирован... Но это всё фигня, тут главное, что нет совместного доступа к файлу (может только во время удаления, но пока проблем небыло......... |
| Автор: Neitron 25.11.2005, 13:42 | ||||
И откудж ети знаешь как работает и ищет данные БД? Уверяю что ты неправ. |
| Автор: Сириус 26.11.2005, 20:38 |
| Спасибо всем за ответы! Куксикус ты можешь обьяснить мне каким образом я могу узнать данный юзер тут или не тут? Это был бы конечно же лучший вариант, но не знаю как.. |
| Автор: Diesel Draft 27.11.2005, 00:46 |
| Короче. Здесь много написали. Потому я всього читать не буду то му извините если я кого нибуть повторю надо штоби когда чат обновляет даные то сохранял в БД в час последнього посещения. А потом проверять если прошто например больше 5 минут то он уже не знами |
| Автор: Сириус 27.11.2005, 01:28 |
| Хм..не понял |
| Автор: patt 28.11.2005, 22:29 | ||||||
MySQL хранит свои данные в обычных файлах, и ессесно работает с ними средствами ОС.... |
| Автор: Mal Hack 28.11.2005, 22:40 | ||
Все всегда хранистся в файлах. Не забывай, что Мискул мнгое в памяти держит. |