Автор Тема: кто online  (Прочитано 4915 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Rodent

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 133
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.unimix.ru
кто online
« : 24 Марта 2006, 20:03:32 »
Всем Доброе время суток.
У меня тут вот такая непонятная ситуация...

Есть пхп-код


function show_online() {
$id session_id();
$time time();
$past time()-500;
$ip =  getip();
mysql_query("delete from sft_online where last_time < \'$past\'");
$result mysql_query("select last_time from sft_online where sess_id=\'$id\'");
$rows mysql_num_rows($result); 
	
	

if (
$rows!="0"mysql_query("update sft_online set last_time=\'$time\',page=\'".$_SERVER["PHP_SELF"]."\',ip=\'$ip\' where sess_id=\'$id\'");
else 
mysql_query("insert into sft_online (sess_id,last_time,page,ip) values (\'$id\',\'$time\',\'".$_SERVER["PHP_SELF"]."\',\'$ip\')");
$on mysql_query("select * from sft_online");
$count mysql_num_rows($on);
echo \
'Сейчас на сайте: \'.$count.\' чел.\';
}


Так вот он мне постоянно выводит что на сайте от 20-60 человек, хотя такого быть не может.
У большинства так называемых onlin\'цев, один и тот же ай-пи.
Но ид-сессии разное, как такое может быть?

В чем я ошибся или чего-то не предусмотрел???
Заранее спасибо.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
кто online
« Ответ #1 : 24 Марта 2006, 21:51:46 »
ИМХО для зарегистрированных нужно проверять session_id() а
для гостей скорее всего ставить cookie а потом их проверять.
[off]Безработный[/off]

Оффлайн Rodent

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 133
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.unimix.ru
кто online
« Ответ #2 : 24 Марта 2006, 22:43:11 »
так у меня сессия для каждого открываетсянезависимо от того кто он.
И насколько я помню из теории она длиться пока, клиент не закроет браузер...
Таким образом, тут небольшая нестыковочка происходит...
Да и куки мне кажется вряд ли помогут, многие зачем-то их запрещают.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
кто online
« Ответ #3 : 24 Марта 2006, 23:43:43 »
Строчка $past = time()-500;  означает у тебя, что пользователи будут считаться online в течение 500 секунд! Это больше 8 минут. Конечно, при таком времени может набраться много онлайновых посетителей.
В общем случае, чем выше это число (500, 600...), тем больше будет онлайновцев.
Вопрос в том, какое число выбрать. Мне кажется, 50-100 вполне достаточно.

Больше ошибок я не заметил.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
кто online
« Ответ #4 : 25 Марта 2006, 00:20:45 »
Цитировать
Rodent:
И насколько я помню из теории она длиться пока, клиент не закроет браузер...


Однозначно, теоретику написавшую такую чужь вырвать пальцы.
session.cache_expire в конфигурационном файле php.ini.
[off]Безработный[/off]

Оффлайн unclebob

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
кто online
« Ответ #5 : 25 Марта 2006, 16:55:31 »
Цитировать
session.cache_expire в конфигурационном файле php.ini.


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

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
кто online
« Ответ #6 : 26 Марта 2006, 14:50:46 »
unclebob
Спасибо, за замечание.

то о чем я говорил скорее всего:
session.gc_maxlifetime

[OFF]неужели и на это раз ошибся ?[/OFF]
[off]Безработный[/off]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28