Forum Webscript.Ru

Программирование => PHP => Тема начата: Rodent от 24 Марта 2006, 20:03:32

Название: кто online
Отправлено: Rodent от 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\'цев, один и тот же ай-пи.
Но ид-сессии разное, как такое может быть?

В чем я ошибся или чего-то не предусмотрел???
Заранее спасибо.
Название: кто online
Отправлено: for_i_0 от 24 Марта 2006, 21:51:46
ИМХО для зарегистрированных нужно проверять session_id() а
для гостей скорее всего ставить cookie а потом их проверять.
Название: кто online
Отправлено: Rodent от 24 Марта 2006, 22:43:11
так у меня сессия для каждого открываетсянезависимо от того кто он.
И насколько я помню из теории она длиться пока, клиент не закроет браузер...
Таким образом, тут небольшая нестыковочка происходит...
Да и куки мне кажется вряд ли помогут, многие зачем-то их запрещают.
Название: кто online
Отправлено: andymc от 24 Марта 2006, 23:43:43
Строчка $past = time()-500;  означает у тебя, что пользователи будут считаться online в течение 500 секунд! Это больше 8 минут. Конечно, при таком времени может набраться много онлайновых посетителей.
В общем случае, чем выше это число (500, 600...), тем больше будет онлайновцев.
Вопрос в том, какое число выбрать. Мне кажется, 50-100 вполне достаточно.

Больше ошибок я не заметил.
Название: кто online
Отправлено: for_i_0 от 25 Марта 2006, 00:20:45
Цитировать
Rodent:
И насколько я помню из теории она длиться пока, клиент не закроет браузер...


Однозначно, теоретику написавшую такую чужь вырвать пальцы.
session.cache_expire в конфигурационном файле php.ini.
Название: кто online
Отправлено: unclebob от 25 Марта 2006, 16:55:31
Цитировать
session.cache_expire в конфигурационном файле php.ini.


вобщето этот параметр определяет время хранения кэшированных страниц
Название: кто online
Отправлено: for_i_0 от 26 Марта 2006, 14:50:46
unclebob
Спасибо, за замечание.

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

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