|
|
|
| Не знаю, почему, но поиск не дал результатов. Объясните мне пожалуйста теорию и, желательно, практитку (простейший пример) скрипта "Кто сейчас на сайте в on-line" ! Как это делается ? | |
|
|
|
|
|
|
|
для: DDK
(03.11.2005 в 12:53)
| | По IP адресу можно выяснить, а данные заносить в БД вместе с датой и временем захождения на сайт. | |
|
|
|
|
|
|
|
для: Gerom
(03.11.2005 в 12:56)
| | Мне не понятна сама теория... т.е. напирмер, как определить, что зверь (читай юзер) ушёл с сайта... как это всё делается ?! | |
|
|
|
|
|
|
|
для: DDK
(03.11.2005 в 13:00)
| | Тогда данные тех пользователей, которые на сайте присутствуют будут обновляться, а тех кто ушел можно минут через 5 исключить из списка, поскольку их данные уже обновляться не будут. | |
|
|
|
|
|
|
|
для: DDK
(03.11.2005 в 13:00)
| | Теория такая:
Когда пользовательприходит на сайт, мы по кукам определяем его. Если это зарегистрированный пользователь, то его идентификатор сессии пишется в базу вместе с его id и временем последнего обновления страницы. Далее из этой таблицы делается элементарная выборка:
<?
$sql='select * from session where last_time>date_sub(NOW(), interval 5 minute)';
$query=mysql_query($sql);
while($r=mysql_fetch_assoc($query)){
echo "Кто он-лайн:<br>";
echo $r['ID']." - ".$r['last_ttime'];
}
?>
|
естественно вместо ID подтягиваются ники из таблицы users
Т.е если пользователь не обновил страницу в течении 5 минут, он будет считаться ушедшим
Далее установив "время жизни пользователей" на сайте т.е. переодичность очистки таблицы с сессиями мы устанавливаем промежуток после которого обновление страницы пользователем будет считаться как новое посещение.
Ну и естественно в начале каждой страницы нужно обновлять таблицу сессий записывая время refresha | |
|
|
|
|
|
|
|
для: Axxil
(03.11.2005 в 13:30)
| | Спасибо, вот теперь я понял принцип ! Встречный вопрос - а очищать таблицу лучше в том же цикле выборки ? Имхо просто это будет занимать не малое время, и соотв. сильно нагружать скрипт, особенно, если я хочу сделать вывод online-зверей на каждой странице сайта... может есть какая-то хитринка по этому поводу ? | |
|
|
|
|
|
|
|
для: DDK
(03.11.2005 в 13:59)
| | А нет просто одним запросом
$sql='delete from session where last_time<date_sub(NOW(), interval 5 minute)';
|
| |
|
|
|
|
|
|
|
|
для: cheops
(03.11.2005 в 14:03)
| | Ууух ! читать и читать мне, чувствую ! Спасибки, как всегда, отличн сработано ! | |
|
|
|