как узнать если пользователи сейчас на сайте
хотя бы подскажите с чего начать
заранее спасибо
Спустя 10 минут, 43 секунды (17.03.2010 - 00:22) Serghei написал(а):
и поставить значок online или offline
Спустя 1 час, 38 минут, 23 секунды (17.03.2010 - 02:00) Игорь_Vasinsky написал(а):
Пользователя запускай на сайт и за ним для него запускай сессию, в пока пользователь на сайте - сессия жива, как тока он ушёл - значит сессия закрыта (умерла)
Вот и контролируй сессию
в БД Логин и session_id - ты даже можешь сделать мониторинг
Вот и контролируй сессию
в БД Логин и session_id - ты даже можешь сделать мониторинг
Спустя 18 минут, 48 секунд (17.03.2010 - 02:19) Serghei написал(а):
идею понял но появился один вопрос как узнать что session_id закрыта (умерла)???????????
Спустя 3 часа, 2 минуты, 57 секунд (17.03.2010 - 05:22) twin написал(а):
Сначала нужно определиться, что в твоем понимании "сейчас на сайте".
Сессия по умолчанию в большинстве случаев живет 24 минуты. Это многовато для онлайн. Если этот интервал устраивает, то можно и так. Но обычно его устанавливают от 5 до 15 минут.
Для того, что бы узнать, сколько в данный момент живых сессий, нужно отсканировать временную директорию, отобрать и подсчитать количество файлов.
Подвох кроется в двух местах. Вернее в трех.
1. Во временной директории может храниться куча других файлов(загружаемых к примеру)
2. Если на площадке несколько сайтов, то сессии всех их хранятся в одной директории
3. Время исполнения скрипта и постоянное дергание файловой системы делают эту перспективу унылой.
Исходя из вышесказанного - это далеко не лучший и не самый простой способ.
Я бы посоветовал работать с БД. Писать туда метку времени, одновременно стирая те записи, у которых превышен установленный лимит.
Сессия по умолчанию в большинстве случаев живет 24 минуты. Это многовато для онлайн. Если этот интервал устраивает, то можно и так. Но обычно его устанавливают от 5 до 15 минут.
Для того, что бы узнать, сколько в данный момент живых сессий, нужно отсканировать временную директорию, отобрать и подсчитать количество файлов.
Подвох кроется в двух местах. Вернее в трех.
1. Во временной директории может храниться куча других файлов(загружаемых к примеру)
2. Если на площадке несколько сайтов, то сессии всех их хранятся в одной директории
3. Время исполнения скрипта и постоянное дергание файловой системы делают эту перспективу унылой.
Исходя из вышесказанного - это далеко не лучший и не самый простой способ.
Я бы посоветовал работать с БД. Писать туда метку времени, одновременно стирая те записи, у которых превышен установленный лимит.
Спустя 1 час, 13 минут, 28 секунд (17.03.2010 - 06:36) Игорь_Vasinsky написал(а):
У вас 2 варианта, до браться самому или же я могу показать как это реализовать.
Алгаритм мы вам набросали....
Алгаритм мы вам набросали....
Спустя 4 минуты, 48 секунд (17.03.2010 - 06:40) Игорь_Vasinsky написал(а):
Цитата |
Я бы посоветовал работать с БД. Писать туда метку времени, одновременно стирая те записи, у которых превышен установленный лимит. |
и я тоже
Цитата |
в БД Логин и session_id - ты даже можешь сделать мониторинг |
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 2 часа, 5 минут, 43 секунды (17.03.2010 - 08:46) phz написал(а):
Цитата (Serghei @ 16.03.2010 - 21:11) |
добрый вечер как узнать если пользователи сейчас на сайте хотя бы подскажите с чего начать заранее спасибо |
http://www.php.su/articles/?cat=examples&page=039
Измени только в коде $REMOTE_ADDR на $_SERVER[REMOTE_ADDR']
Спустя 50 минут, 37 секунд (17.03.2010 - 09:37) twin написал(а):
Я очень уважаю этот ресурс, однако так делать нельзя. Туда тоже можно напихать всякой гадости, это опасно. Кроме того, не всегда IP находится в $_SERVER['REMOTE_ADDR']
Вот это место:
лучше сделать так:
Вот это место:
global $REMOTE_ADDR;
лучше сделать так:
if(($REMOTE_ADDR = @$_SERVER['HTTP_X_FORWARDED_FOR']) === null)
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
$REMOTE_ADDR = long2ip(ip2long($REMOTE_ADDR));
Спустя 5 дней, 2 часа, 32 минуты, 19 секунд (22.03.2010 - 12:09) bitrop написал(а):
нужно в БД сделать поле куда будет записано время входа в виде $lasttime=time();
и при каждом действии обновлять это поле!
А потом все просто
if ((time()-$lasttime)>10)
{
оффлайн
}
else{онлайн}
и при каждом действии обновлять это поле!
А потом все просто
if ((time()-$lasttime)>10)
{
оффлайн
}
else{онлайн}
Спустя 1 год, 1 месяц, 22 дня, 2 часа, 46 минут, 47 секунд (14.05.2011 - 13:56) Guest написал(а):
Цитата |
if(($REMOTE_ADDR = @$_SERVER['HTTP_X_FORWARDED_FOR']) === null) $REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; $REMOTE_ADDR = long2ip(ip2long($REMOTE_ADDR)); |
не работает!!!
Спустя 7 минут, 12 секунд (14.05.2011 - 14:03) XCross написал(а):
Походу отомстил он вам за взрыв мозга
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)