Licznik online można bardzo prosto napisać w oparciu o plik online.txt, szybkość takiego rozwiązania jest nieco większa niż zapis aktywnych adresów IP w bazie danych.
Skrypt działa w taki sposób:
Wczytuje plik online.txt do zmiennej.
Zmienna wygląda tak: ip|time&kolejneip&kolejnytime
Jak widać & odziela poszczególne wpisy na strukture ip|time.
Więc skrypt przez explode rozdziela znakiem & tą zmienną i robi taką Array:
Potem sprawdza czy od ostatniego czasu aktywności IP minęło mniej niż 900 sekund. jeśli tak to $online_users zwiększa liczbę.
Tworzy nową zmienną $to_save i zapisuje do pliku online.txt.
Na końcu wystarczy wyświetlić gdzieś zmienną $online_users, co zostało zrobione na koncu kodu.
Listing
//Script by Fastman92, Rozbudowany licznik odwiedzin ma to wszystko od razu po instalacji.
$online_time = 900; // wpisz tu w sekundach z ilu ostatnich minut użytkownik ma być zaliczany jako aktywny
$active_users = explode('&', file_get_contents('online.txt'));
$to_write = Array();
$online_users = 0;
$time = time();
foreach($active_users as $value)
{
$entry = explode('|', $value);
if($entry[0] !== $_SERVER['REMOTE_ADDR'])
{
if($time-$entry[1]<$online_time)
{
$to_write[] = $entry[0].'|'.$entry[1];
$online_users++;
}
}
}
$online_users++;
$to_write[] = $_SERVER['REMOTE_ADDR'].'|'.$time;
$to_write = implode('&', $to_write);
$online_fp = fopen('online.txt', 'w+');
flock($online_fp, LOCK_EX);
fwrite($online_fp, $to_write);
fclose($online_fp);
//Potem gdzieś należy wyświetlić zmienną $online_users
echo $online_users;
?>