Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Кой е онлайн?
  1. Кой е онлайн?
Mutatos
     
Автор  Mutatos (10.05.2004 15:51)  съобщение до автора
Погледнат  7282 пъти  добави към любими
Оценка  добави коментар
Гласове  19  изпрати на приятел
Коментари  (5)  абонирай се за PHP
    Страница 1 / 1

 



Доста страници притежват много потребители, който в момента са онлайн, но никой не знае точната им цифра.

За да може да презентирате на вашите потребители колко човека в момента са онлайн Ви трябват само няколко стъпки.

Скрипта, който Ви предлагам не прави нищо друго освен да проверява директорията, в която ви се запаметяват сесиите на PHP и да отчита броя на активните сесии. По този начин си спестявате работата с база за данни!

В началото трябва да разберете, къде точно ви се запаметяват сесиите. Ако не знаете точния път на изуст, това може да разберете, като създадете една нова страниза на PHP, да кажем info.php и напишете в нея следния ред:

CODE
1
2
3
<?PHP
echo phpinfo
();
?>

Чрез тази функция ще видите всичките променливи на PHP.
След това търсите реда session.save_path и ще видите къде точно ви се запаметяват сесиите!
Тази процедура е важна за сървъри, където директориите за запаметяване на сесиите са сменени. Като стандарт за Linux сървъри е директорията /tmp.


След като вече сте намерили мястото на сесиите на вашия сървър може да започнем със скрипта...

CODE
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
<?php

session_save_path
("/път/до/сесиите");
// Стартиране на сесията
session_start();

function showuseronline(){
if ( $directory_handle = opendir( session_save_path() ) ) {
// Инициализиране на променливата със стойност
0
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
// Преброяване на всичко, което не е . или ..
if($file != '.' && $file != '..'){

$count++;
}
}

// Затваряне на директорията
closedir($directory_handle);
// Връщане на стойността на променливата
$count
return $count;
} else { return false; }
}


?>

Използването на функцията става по следния начин:

CODE
1
2
3
<?
echo 'Потребители онлайн: ' . showuseronline();
?>



   


Ключови думи: PHP програмиране уеб сайт online онлайн


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: Mutatos  
Николай Николов се занимава с програмиране на PHP/MySQL повече от 6 години. Заедно с разработката на уеб приложения на PHP, се занимава с Java, XML и Webservices.
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

ако решите да ползвате този механизъм резултат ще бъде доста неверен... поради простата причина, че трябва да разчитате на пхп-то да си затрива сесиите, демек да трие файловете.
бих препоръчал да ползвате нещо подобно на примера даден тук: http://www.onlamp.com/pub/a/php/2001/05/10/sessions.html?page=2
и след това да се селектира от таблицата, като се взимат само записите на които сесията не е изтекла.
принципно препоръчвам за сериозни сайтове използването на този подход, ама всеки си решава сам за себе си ;)

  dimomit на 26.04.2006 22:43

според мен е статията е ОК, това наистина ми се струва най-лесния начин за онлайн потребители..
една забележка - за да се избегне това с общите директории като /тмп - ами направи си я някъде другаде, където си е само за сайта..
session_save_path() returns the path of the current directory used to save session data. If path is specified, the path to which data is saved will be changed. session_save_path() needs to be called before session_start() for that purpose.

  ddimitrov на 16.05.2004 22:26

Склонен съм да се съглася за т.4.

  nikolay на 14.05.2004 19:28

1. Щом този коментар ви пречи ще го махнем!
2. За точка 4, не съм много съгласен, защото трябва да имаш права да променяш конфигурациите за сесията. А според мен логнат си означава онлайн!

  Mutatos на 13.05.2004 16:29

Само няколко бележки:

1. Директорията, в която се пазят сессите може да се използва и от други потребители на същия сървър (/tmp е идеален пример). Погледнете http://www.pmgvt.org/nikolay/online.php Дали на тази страничка в момента има толкова потребители?

2. Спорен и силно зависим от конкретната конфигурация е въпроса КОГА се трият файловете, които броим (За справка - конфигурационните опции на http://bg.php.net/manual/en/ref.session.php )

3. Още не съм виждал книжка, в която да има поне един абзац на тема "Как да пишем коментари" и в която да няма съвета да не пишем коментари от вида (цитирам):
// Увеличаване на промеливата $count с 1

4. Какво се получава ако ползваме сесиите за други цели и имаме желание сесията да остава постоянно, а не само докато потребителя си затвори браузъра? Логнат не винаги значи онлайн.

  nikolay на 13.05.2004 00:29

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008