Obliczanie ilu użytkowników online przebywa na wybranej podstronie .w CMS.PHP Fusion v9.
Taki skrypt jest szczególnie potrzebny jeśli chcemy dowiedzieć się ilu użytkowników , przebywa na wybranej podstronie.
Co prawda CMS. PHP Fusion v9 posiada licznik wbudowany w standardzie ale ten licznik zlicza ilość gości przebywających , na wszystkich podstronach.
Skrypt sprawdzony i działa poprawnie .
Demo widoczne jest na stronie
https://nw.ct8.pl/artykul/22/konwerte...
<?php
/**
* Stała zawiera nazwę pliku, w którym znajdują się dane o gościach >.
*/
define('FILE_NAME','nazwa_pliku.php');
/**
* Zwraca liczbę sekund, które odpowiadają w czasie liczbie minut podanej w
* argumencie w funkcji.
*
* @param integer $minutes
* @retrun integer
*/
function gsf_minutes($minutes)
{
return 60 * $minutes;
} #end function gsf_minutes()
/**
* Zwraca liczbę sekund, które odpowiadają w czasie liczbie godzin podanej w
* argumencie w funkcji.
*
* @param integer $hours
* @retrun integer
*/
function gsf_hours($hours)
{
return 3600 * $hours;
} #end function gsf_hours()
/**
* Zwraca liczbę sekund, które odpowiadają w czasie liczbie dni podanej w
* argumencie w funkcji.
*
* @param integer $days
* @retrun integer
*/
function gsf_days($days)
{
return 86400 * $days;
} #end function gsf_days()
/**
* Zwraca liczbę osób online. Liczba ta musi być większa od 0 gdyż ktoś musi
* przeglądać stronę skoro skrypt jest wykonywany ;]
*
* @param void
* @retrun integer
*/
function visitors()
{
global $online2;
$online = count($online2);
if($online == 0)
return 1;
else
return $online;
} #end function visitors()
if(file_exists(FILE_NAME))
{
$online = file(FILE_NAME);
foreach($online as $on)
{
$part = explode("\t",$on);
$online2[rtrim($part[0])] = $part[1];
}
unset($online2[$_SERVER['REMOTE_ADDR']]);
$online2[$_SERVER['REMOTE_ADDR']] = time();
foreach(array_keys($online2) as $on)
{
if($online2[$on] < (time() - gsf_minutes('5')))
unset($online2[$on]);
else
$file_ .= "$on \t $online2[$on] \n";
}
}
else
{
$file_ = $_SERVER['REMOTE_ADDR']."\t".time()."\n";
}
echo ''.visitors();
$file = fopen(FILE_NAME,'w');
flock($file, LOCK_EX);
fwrite($file,$file_);
flock($file, LOCK_UN);
fclose($file);
?>
:użytkowników Online: