|
|
|
| Можно ли как-то посчитать количесво пользователей онлайн на сайте через сессии? | |
|
|
|
|
|
|
|
для: kukuikar
(27.12.2007 в 14:05)
| | Возможно вас заинтересует скрипт по ссылке http://www.softtime.ru/scripts/online.php. | |
|
|
|
|
|
|
|
для: cheops
(27.12.2007 в 14:38)
| | а без MySQL, это как у mihdan? | |
|
|
|
|
|
|
|
для: kukuikar
(27.12.2007 в 14:05)
| | Если у хостера они не хранятся в общей куче, то можно. | |
|
|
|
|
|
|
|
для: Loki
(27.12.2007 в 16:16)
| | в общей куче с чем? | |
|
|
|
|
|
|
|
для: kukuikar
(27.12.2007 в 23:48)
| | с сессиями других сайтов. | |
|
|
|
|
|
|
|
для: kukuikar
(27.12.2007 в 14:05)
| | есть
<?Php
session_save_path("/path/to/custom/directory");
session_start();
define("MAX_IDLE_TIME", 3);
function getOnlineUsers(){
if ( $directory_handle = opendir( session_save_path() ) ) {
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != '.' && $file != '..'){
if(time()- fileatime(session_save_path() . '\\' . $file) < MAX_IDLE_TIME * 60) {
$count++;
}
} }
closedir($directory_handle);
return $count;
} else {
return false;
}}
echo 'Пользователей онлайн: ' . getOnlineUsers() . '<br />';
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(27.12.2007 в 16:28)
| | а для session_save_path нужен полный путь или так /tmp можно? кстати по умолчанию там и стоит /tmp | |
|
|
|
|
|
|
|
для: kukuikar
(27.12.2007 в 23:47)
| | > нужен полный путь или так /tmp можно
/tmp и есть полный путь. | |
|
|
|
|
|
|
|
для: Unkind
(28.12.2007 в 00:00)
| | а это что тогда /home/folder01/tmp ?
Не полный путь? | |
|
|
|
|
|
|
|
для: kukuikar
(28.12.2007 в 01:10)
| | Это полный путь до другой папки, не имеющей общего с /tmp. Слеш в начале означает путь от корня. | |
|
|
|
|
|
|
|
для: Unkind
(28.12.2007 в 01:49)
| | значит у меня все сессии в куче с остальными сайтами.....
а в принципе я могу переназначить путь до session_save_path("/home/userXXX/site1_sessions") так? да? | |
|
|
|
|
|
|
|
для: kukuikar
(28.12.2007 в 19:25)
| | Да. Но я Вам советую использовать для подсчета онлайна таблицу в базе данных. Иначе скорость выполнения кода mihdan'а будет такой, что за это время можно будет три раза поужинать. | |
|
|
|
|
|
|
|
для: Unkind
(28.12.2007 в 20:29)
| | >Иначе скорость выполнения кода mihdan'а будет такой, что за это время можно будет три раза поужинать.
Сейчас проверил пользователей по всему серверу:
Время генерации: 0.019 сек.
Так что ужин у вас окажется недолгим:) | |
|
|
|
|
|
|
|
для: Loki
(29.12.2007 в 10:13)
| | > Сейчас проверил пользователей по всему серверу:
> Время генерации: 0.019 сек.
А Вы clearstatcache() в его функцию добавили? Без нее код будет давать неточные результаты.
Сейчас проверил на сервере папку с 10K файлов и очисткой кеша ~ от 3 до 6 с. | |
|
|
|
|
|
|
|
для: Unkind
(29.12.2007 в 10:46)
| | >А Вы clearstatcache() в его функцию добавили?
А зачем? Данные кэшируются только в рамках выполнения одного скрипта. А в процессе выполнения мы вызываем один файл не больше одного раза.
Кстати, после того как переписал этот код под PHP5, время выполнения упало до 0.001 сек.
Хотя, понятное дело, загрузка моего сервера меньше чему у Вашего. | |
|
|
|
|
|
|
|
для: Loki
(29.12.2007 в 11:15)
| | Да, скорее всего. Смутило одно обстоятельство в прошлом при подсчете онлайна именно таким образом. И скорость тогда была не ахти.
Но я бы все равно предпочел использовать таблицу в базе данных. Провести DoS (даже не DDoS) там будет труднее. | |
|
|
|
|
|
|
|
для: mihdan
(27.12.2007 в 16:28)
| | За обратный слеш в пути файла - двойка.
И нет смысла проверять все файлы подряд. Во временной директории может много всякого барахла храниться. Нас же только сессии интересуют. | |
|
|
|