Forum Webscript.Ru
Программирование => PHP => Тема начата: 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\'цев, один и тот же ай-пи.
Но ид-сессии разное, как такое может быть?
В чем я ошибся или чего-то не предусмотрел???
Заранее спасибо.
-
ИМХО для зарегистрированных нужно проверять session_id() а
для гостей скорее всего ставить cookie а потом их проверять.
-
так у меня сессия для каждого открываетсянезависимо от того кто он.
И насколько я помню из теории она длиться пока, клиент не закроет браузер...
Таким образом, тут небольшая нестыковочка происходит...
Да и куки мне кажется вряд ли помогут, многие зачем-то их запрещают.
-
Строчка $past = time()-500; означает у тебя, что пользователи будут считаться online в течение 500 секунд! Это больше 8 минут. Конечно, при таком времени может набраться много онлайновых посетителей.
В общем случае, чем выше это число (500, 600...), тем больше будет онлайновцев.
Вопрос в том, какое число выбрать. Мне кажется, 50-100 вполне достаточно.
Больше ошибок я не заметил.
-
Rodent:
И насколько я помню из теории она длиться пока, клиент не закроет браузер...
Однозначно, теоретику написавшую такую чужь вырвать пальцы.
session.cache_expire в конфигурационном файле php.ini.
-
session.cache_expire в конфигурационном файле php.ini.
вобщето этот параметр определяет время хранения кэшированных страниц
-
unclebob
Спасибо, за замечание.
то о чем я говорил скорее всего:
session.gc_maxlifetime
[OFF]неужели и на это раз ошибся ?[/OFF]