Ловим закрытие браузера

rooot

Новичок
Ловим закрытие браузера

Поднималось много разных тем по этому вопросу, и все поверхностно. Вот решил и я поднять наболевший вопрос.
Значит имеем браузер пользователя, ПХП и мускул. Тут все понятно, пользователь зашел к примеру в чат, записываем в БД его логин, записываем время, и пишем еще и таймаут, как я понял самый лучший вариант это 5 минут. Тут тоже нет никаких проблем. Далее если он не делает никаких действий в течении 5 минут, то значит он дисконект. Удаляем. Вот тут и собственно проблема. А как удалить его? Чем? Могу только догадоватся, может в системе надо запускать отдельный скрипт из шела? Который будет работать постоянно в не зависимости есть ли пользователи или нет? Так или я гоню?
Объясните принцип, подробнее плиз, я не прошу Вас писать за меня код. Да и как быть в том случае если пользователь ничего не делает т.е. отошел куда то, при это нажал на кнопку выключить обновление чата ( я воткнул такую функцию, может кто то устал от месаг, если кто то скажет что лучше поставить фильтрацию сообщений для него, выводить сообщения отосланные имено ему, это я тоже сделал). Помогите плиз, заранее спасибо.
 

Tor

Новичок
rooot
давай медленно
зачем тебе список тех, кто в онлайне?
 

rooot

Новичок
ну не удалять, а ставить статус оффлайн, ну это не принципиально

-~{}~ 16.01.06 17:53:

>>Tor
Ж))))) Нужен, очень сильно )))) отправлять сообшения хотябы.

-~{}~ 16.01.06 17:55:

проверять может пользователь уже в чате, а то вдруг кто то пароли узнал ))))
 

msdn11

Новичок
не надо его ловить. поставь в самом скрипте(главная комната чата) проверку и удаление просроченых акаунтов. если так посещаймость не заоблачная то это вариант...
 

Tor

Новичок
>>Tor
Ж))))) Нужен, очень сильно )))) отправлять сообшения хотябы.
для начала, я думаю, ты хотел его где-то показать
так?
ну так перед выводом делай запрос базе, который переведет в оффлайн кого надо
 

_RVK_

Новичок
Я вот тоже не пойму сути вопроса. Он знает КАК сделать, но не знает ЧТО :)
 

white phoenix

Новичок
rooot
Выполняй скрипт вместе с загрузкой какой-нибудь странички, или через cron: выбирай пользователей у которых `lastrefreshtime`+ timeout < time(), timeout равно например 5*60, и к ним применяй нужные действия (удаляй из списка, выводи сообщение и т.д.).
_RVK_
Когда знаешь точно как делать, вопрос что делать отпадает :)

-~{}~ 16.01.06 18:16:

rooot
Броузер для таких целей использовать глупо, но если все-таки хочешь - событие onunload в <body>.
 

rooot

Новичок
>>Tor
ну так перед выводом делай запрос базе, который переведет в оффлайн кого надо
а если никого в чате не осталось???
>>white phoenix
Уже ближе к сути т.е. запускать кроном скрипт к примеру каждые 5 минут который будет проверять на проводе пользователи или нет? Ясно.
Броузер для таких целей использовать глупо
А что посоветуешь?
 

white phoenix

Новичок
rooot
> Уже ближе к сути т.е. запускать кроном скрипт к примеру каждые 5 минут который будет проверять на проводе пользователи или нет? Ясно.
Каждую минуту лучше.
> А что посоветуешь?
^^
 

rooot

Новичок
white phoenix
Броузер для таких целей использовать глупо
А что посоветуешь?
ответ читай выше, выше ничего нет )))

-~{}~ 16.01.06 18:46:

white phoenix
Блин стормозил, сори
Выполняй скрипт вместе с загрузкой какой-нибудь странички, или через cron: выбирай пользователей у которых `lastrefreshtime`+ timeout < time(), timeout равно например 5*60, и к ним применяй нужные действия (удаляй из списка, выводи сообщение и т.д.).
Поздно уже спать пора :)
 

Vladson

Сильнобухер
rooot Для чата есть прекрасная функция Connection_Aborted()
Ставишь на страницу с чатом блоху (картинку "image.php?sid=asdfgh") а в файле код...

PHP:
<?php
Set_Time_Limit(0);
Ignore_User_Abort(True);
While(!Connection_Aborted()) {
      Sleep(1);
}
mysql_query('delete from .........')
?>
И никаких кронов и прочей фигни...
 

rooot

Новичок
Vladson
Вот!

-~{}~ 16.01.06 19:40:

А эта функция IIS не работает что ли?
Я сделал не блоху а скрытый фрейм. Может трабл в нем?
 

Dreammaker

***=Ф=***
set_time_limit() может не иметь никакого действия на рельаном хостинге, у которого ОС настроена, чтобы убивать процесы, длящиеся больше определённого времени.

Это раз. А два помотри совет white phoenix.

Если ты переживаешь, что-то ничего не произойдёт, если никого не будет онлайн, то задумайся, то нужна ли кому-то информация, о том, что есть кто-то онлайн или нет, если в чате никого нет. Если тебе нужно вывести на входной странице информацию о присутствующих, то тоже вычисляй по таймауту...
 

Vladson

Сильнобухер
Dreammaker
Это называется safe_mode (нормальные хостеры такими вещами не балуются)

-~{}~ 16.01.06 21:42:

rooot
На счёт IIS сказать не могу, возможно...
(а фрейм или блоха это значение не имеет в данном случае)
 

white phoenix

Новичок
Vladson
Уверен? Кучу хостингов я видел где safe_mode = Off и процессы старше 1 мин прибиваются.

Слово 'блоха' надо добавить в словарь :)
 

Vladson

Сильнобухер
white phoenix
Слово "блоха" (картинка 1px*1px) вообще-то в обороте ещё с чёрт-знает каких времён, для меня сюрприз что кто-то этого может не знать...
 
Сверху